Hello
I have a problem with my code. I defined different void functions (biturbo, vorgehen and kopf). I run them in my void loop().
Now the function biturbo() works, while vorgehen() doesnt. When I plug the arduino uno to my pc, biturbo() works only partially and vorgehen() not at all. When I plug it to the wall socket, biturbo() works like intended but vorgehen() not at all.
The function kopf() works perfectly fine (its a servo, biturbo() and vorgehen() are motor with a motorshield).
What did I miss? I cant find a solution.
#include <IRremote.hpp>
#include <Servo.h>
Servo myservo;
int pos = 0;
void kopf(){
for (pos = 0; pos <= 70; pos += 1) { // goes from 0 degrees to 180 degrees
// in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15 ms for the servo to reach the position
}
for (pos = 70; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15 ms for the servo to reach the position
}
}
void vorgehen(){
//Motor A vorwärts mit maximaler Geschwindigkeit
digitalWrite(12, HIGH); // Einstellen der Vorwärtsrichtung für Channel A
digitalWrite(9, LOW); // Deaktivieren der Bremse für Channel A
analogWrite(3, 190); // Drehen des Motors A mit maximaler Geschwindigkeit
//Motor B vorwärts mit maximaler Geschwindigkeit
digitalWrite(13, LOW); // Einstellen der Vorwärtsrichtung für Channel B
digitalWrite(8, LOW); // Deaktivieren der Bremse für Channel B
analogWrite(11, 190); // Drehen des Motors B mit maximaler Geschwindigkeit
}
void rgehen(){
//Motor A vorwärts mit normaler Geschwindigkeit
digitalWrite(12, LOW); // Einstellen der Rückwärtsrichtung für Channel A
digitalWrite(9, LOW); // Deaktivieren der Bremse für Channel A
analogWrite(3, 150); // Drehen des Motors A mit normaler Geschwindigkeit
//Motor B vorwärts mit normaler Geschwindigkeit
digitalWrite(13, HIGH); // Einstellen der Rückwärtsrichtung für Channel B
digitalWrite(8, LOW); // Deaktivieren der Bremse für Channel B
analogWrite(11, 150); // Drehen des Motors B mit normaler Geschwindigkeit
}
void augen(){
}
void stoppen(){
analogWrite(3, 0);
analogWrite(11, 0);
digitalWrite(9, HIGH); // Aktivieren der Bremse für Channel A
digitalWrite(8, HIGH); // Aktivieren der Bremse für Channel B
}
void biturbo(){
//Motor A vorwärts mit maximaler Geschwindigkeit
digitalWrite(12, HIGH); // Einstellen der Vorwärtsrichtung für Channel A
digitalWrite(9, LOW); // Deaktivieren der Bremse für Channel A
analogWrite(3, 255); // Drehen des Motors A mit maximaler Geschwindigkeit
//Motor B vorwärts mit maximaler Geschwindigkeit
digitalWrite(13, LOW); // Einstellen der Vorwärtsrichtung für Channel B
digitalWrite(8, LOW); // Deaktivieren der Bremse für Channel B
analogWrite(11, 255); // Drehen des Motors B mit maximaler Geschwindigkeit
}
void setup() {
Serial.begin(115200);
IrReceiver.begin(7, ENABLE_LED_FEEDBACK); // Start the receiver
myservo.attach(10);
}
void loop() {
if (IrReceiver.decode()){
Serial.println(IrReceiver.decodedIRData.decodedRawData, HEX);
IrReceiver.resume(); // Enable receiving of the next value
}
if(IrReceiver.decodedIRData.decodedRawData == 0xE718FF00){
vorgehen();
Serial.println("vgehen");
delay(3000);
}
if(IrReceiver.decodedIRData.decodedRawData == 0xAD52FF00){
rgehen();
Serial.println("rgehen");
delay(3000);
}
if(IrReceiver.decodedIRData.decodedRawData == 0xBA45FF00){
Serial.println("kopf");
kopf();
delay(3000);
}
if(IrReceiver.decodedIRData.decodedRawData == 0xB946FF00){
augen();
Serial.println("augen");
delay(3000);
}
if(IrReceiver.decodedIRData.decodedRawData == 0xE916FF00){
stoppen();
Serial.println("stoppen");
delay(1000);
}
if(IrReceiver.decodedIRData.decodedRawData == 0xF20DFF00){
biturbo();
Serial.println("biturbo");
delay(3000);
}
//IrReceiver.resume(); // Enable receiving of the next value
}
I edited it to my current code.