Affansen
Katılımcı Üye
- Katılım
- 15 Ocak 2021
- Mesajlar
- 501
- Puanları
- 56
Öncelikle iyi akşamlar. IR kütüphanesinin mantığını çözemedim. İnternette bir kod buldum araba yapmak için. Kod çalışıyor ama benim istediğim gibi olmadı. Birisi yardımcı olursa çok mutlu olurum. Birkaç sorum daha olacak. İlerledikçe yeni konu açacağım.
Bu koda hız efekti ekleyebilir misiniz? Yani enB ve enA değişken olarak atanıp, hızları 40 birim veya başka bir şekilde artacak biçimde ayarlamam gerekiyor. Yardımcı olabilir misiniz?
Kumandanın kodları:
Arttırma:
Şimdiden teşekkür ederim.
@FakirMaker
C#:
#include <IRremote.h>
char command;
int receiver_pin = 4; //Connect the output pin of IR receiver at pin 4
int vcc = 5; //VCC for IR sensor
int gnd = 6; //GND for IR sensor
int statusled = 13;
IRrecv irrecv(receiver_pin);
decode_results results;
// connect motor controller pins to Arduino digital pins
// motor A
int enA = 6;
int in1 = 12;
int in2 = 11;
// motor B
int enB = 5;
int in3 = 10;
int in4 = 9;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn();
pinMode(statusled,OUTPUT);
digitalWrite(statusled,LOW);
// set all the motor control pins to outputs
pinMode(enA, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
pinMode(vcc, OUTPUT);
pinMode(gnd, OUTPUT);
// Initializing vcc pin high
digitalWrite(vcc, HIGH);
}
void loop() {
if (irrecv.decode(&results)) {
digitalWrite(statusled,LOW);
irrecv.resume();
if (results.value == 0x40BF609F){ // type button 2 forward robot control
// this function will run the motors in both directions at a fixed speed
Serial.println("Button 2");
// turn on motor A
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
// set speed to 200 out of possible range 0~255
analogWrite(enA, 130);
// turn on motor B
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
// set speed to 200 out of possible range 0~255
analogWrite(enB, 130);
}else if(results.value == 0x40BF906F){ // type button 4 turn left robot control
// this function will run motor A in forward directions motor B stop
Serial.println("Button 4");
// turn on motor A
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
// set speed to 200 out of possible range 0~255
analogWrite(enA, 130);
// turn on motor B
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
// set speed to 200 out of possible range 0~255
analogWrite(enB, 130);
}else if(results.value == 0x40BF48B7){ // type button 1 rotate left robot control
// this function will run motor A in forward directions motor B in backward directions
Serial.println("Button Turn Right");
// turn on motor A
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
// set speed to 200 out of possible range 0~255
analogWrite(enA, 130);
// turn on motor B
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
// set speed to 200 out of possible range 0~255
analogWrite(enB, 130);
}else if(results.value == 0x40BFD02F){ // type button 6 turn right robot control
// this function will stop motor A run motor B in forward directions
Serial.println("Button Turn Left");
// turn on motor A
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
// set speed to 200 out of possible range 0~255
analogWrite(enA, 130);
// turn on motor B
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
// set speed to 200 out of possible range 0~255
analogWrite(enB, 130);
}else if(results.value == 0x40BFC837){ // type button 3 rotate right robot control
// this function will run motor A in backward directions motor B in forward directions
// turn on motor A
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
// set speed to 200 out of possible range 0~255
analogWrite(enA, 130);
// turn on motor B
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
// set speed to 200 out of possible range 0~255
analogWrite(enB, 130);
} else if(results.value == 0x40BF708F){ // type button 8 backward robot control
// this function will run motor A and motor B in backward directions
// turn on motor A
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
// set speed to 200 out of possible range 0~255
analogWrite(enA,130);
// turn on motor B
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
// set speed to 200 out of possible range 0~255
analogWrite(enB, 130);
}else if(results.value == 0x40BF50AF){ // type button 5 stop robot control
// this function will stop both motor A and motor B
// turn on motor A
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
// set speed to 200 out of possible range 0~255
analogWrite(enA, 130);
// turn on motor B
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
// set speed to 200 out of possible range 0~255
analogWrite(enB, 130);
}
}
}
Bu koda hız efekti ekleyebilir misiniz? Yani enB ve enA değişken olarak atanıp, hızları 40 birim veya başka bir şekilde artacak biçimde ayarlamam gerekiyor. Yardımcı olabilir misiniz?
Kumandanın kodları:
Arttırma:
40BFF807/ICODE]
Azaltma:[ICODE]40BF7887
Şimdiden teşekkür ederim.
@FakirMaker