Hello Mr. Wasser,
i have another problem with the code. first of all when i upload the code below , it is running normal. i can adjust and set rotation , direction and speed of dc motor. :
int motor1pin1 = 8; //in1 motor1
int motor1pin2 = 12; //in2 motor1
int motor1pin3 = 11; //enable motor1
int mSpeed1 = 50;
int motor2pin1 = A0; //in1 motor2
int motor2pin2 = A1; //in2 motor2
int motor2pin3 = 10; //enable motor2
int mSpeed2 = 50;
void setup() {
// put your setup code here, to run once:
pinMode(motor1pin1, OUTPUT); //in1 pin motor1
pinMode(motor1pin2, OUTPUT); //in2 pin motor1
pinMode(motor1pin3, OUTPUT); //enable pin motor1
pinMode(motor2pin1, OUTPUT); //in1 pin motor2
pinMode(motor2pin2, OUTPUT); //in2 pin motor2
pinMode(motor2pin3, OUTPUT); //enable pin motor2
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(motor1pin1, HIGH);
digitalWrite(motor1pin2, LOW);
analogWrite(motor1pin3, mSpeed1);
digitalWrite(motor2pin1, HIGH);
digitalWrite(motor2pin2, LOW);
analogWrite(motor2pin3, mSpeed2);
}
but when i add code irremote on that sketch , it was not working. motor can not controlled at all. i change ir sensor and remote with new one, the problem same as before. any suggestion or idea to solve this problem? the code with irremote as below. thank you.
#include <IRremote.h>
int IRpin = 4;
String kodeKu;
struct kode
{
uint32_t kodeValue;
const char * ku;
} KodeList[] =
{
{0xE619FF00, "zero"},
{0xBA45FF00, "one"},
{0xB946FF00, "two"},
{0xB847FF00, "three"},
{0xBB44FF00, "four"},
{0xBF40FF00, "five"},
{0xBC43FF00, "six"},
{0xF807FF00, "seven"},
{0xEA15FF00, "eight"},
{0xF609FF00, "nine"},
{0xE916FF00, "star"},
{0xF20DFF00, "hashtag"},
{0xE718FF00, "UP"},
{0xAD52FF00, "DOWN"},
{0xA55AFF00, "FORWARD"},
{0xF708FF00, "REWIND"},
{0xE31CFF00, "OK"},
};
const char * GetKodeKu(uint32_t kode)
{
size_t kuCount = sizeof KodeList / sizeof KodeList[0];
for (size_t i = 0; i < kuCount; i++)
{
if (KodeList[i].kodeValue == kode)
{
Serial.print("Recognized as ");
Serial.println(KodeList[i].ku);
return KodeList[i].ku;
}
}
Serial.println("Kode Not Recognized");
return "";
}
const int motor1pin1 = 8; //in1 motor1
const int motor1pin2 = 12; //in2 motor1
const int motor1pin3 = 11; //enable motor1
int mSpeed1 = 50;
const int motor2pin1 = A0; //in1 motor2
const int motor2pin2 = A1; //in2 motor2
const int motor2pin3 = 10; //enable motor2
int mSpeed2 = 50;
void setup()
{
// put your setup code here, to run once:
Serial.begin(115200);
delay(200);
Serial.println("setup()");
IrReceiver.begin(IRpin);
pinMode(motor1pin1, OUTPUT); //in1 pin motor1
pinMode(motor1pin2, OUTPUT); //in2 pin motor1
pinMode(motor1pin3, OUTPUT); //enable pin motor1
pinMode(motor2pin1, OUTPUT); //in1 pin motor2
pinMode(motor2pin2, OUTPUT); //in2 pin motor2
pinMode(motor2pin3, OUTPUT); //enable pin motor2
IrReceiver.enableIRIn();
}
void loop()
{
Serial.println("loop()");
// put your main code here, to run repeatedly:
while (IrReceiver.decode() == 0);
unsigned long value = (IrReceiver.decodedIRData.decodedRawData);
Serial.print("Received: ");
Serial.println(value, HEX);
IrReceiver.resume();
kodeKu = GetKodeKu(value);
switch (value) {
case1: 0xBA45FF00;//motor1 power on/off speed=0 ("one_btn")
digitalWrite(motor1pin1,HIGH);//setting motor1 on and off
digitalWrite(motor1pin2, LOW);
analogWrite(motor1pin3, mSpeed1);
break;
case2: 0xE718FF00;//motor1 speed up (up_btn)
Serial.println("UP");
mSpeed1 += 10;
if (mSpeed1 > 255) mSpeed1 = 255;
analogWrite(motor1pin3, mSpeed1);
break;
case3: 0xAD52FF00;// motor1 speed down (down_btn)
Serial.println("DOWN");
mSpeed1 -= 10;
if (mSpeed1 < 0) mSpeed1 = 0;
analogWrite(motor1pin3, mSpeed1);
break;
case4: 0xBB44FF00;//motor2 power on speed 0 "four_btn"
digitalWrite(motor2pin1, !digitalRead(motor2pin1));
digitalWrite(motor2pin2, LOW);
analogWrite(motor2pin3, mSpeed2);
break;
case5: 0xA55AFF00;//motor2 speed up (FORWARD_btn)
Serial.println("FORWARD");
mSpeed2 += 10;
if (mSpeed2 > 255) mSpeed2 = 255;
analogWrite(motor2pin3, mSpeed2);
break;
case6: 0xF708FF00;// motor2 speed down (REWIND_btn)
Serial.println("REWIND");
mSpeed1 -= 10;
if (mSpeed2 < 0) mSpeed2 = 0;
analogWrite(motor2pin3, mSpeed2);
break;
}
}