Wie kann ich bei Arduino uno eine led mithilfe eines tasters ein und aus schalten?

1 Antwort

Hi,

benutze anstatt INPUT lieber INPUT_PULLUP (aktiviert internen Pullup).
Dann schaltest du deinen ButtonPin über den Taster/Schalter auf Ground.

Du musst dann aber auf buttonState==LOW abfragen, da du mit dem Pullup ja das Potenzial am Pin auf 5V hochziehst und es mit dem Taster auf 0V legst.

Somit schaltet deine LED sobald der Schalter zu ist und geht wieder aus sobald Schalter auf ist. Hoffe das hat dir geholfen!

Hier dein fertiger Code:

int buttonPin = 2; 
int ledPin = 13; 
int buttonState = 0;

void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP); 

}

void loop() {

 buttonState = digitalRead(buttonPin);

 if (buttonState == LOW) { 

   digitalWrite(ledPin, HIGH); 

}

 else {

 digitalWrite(ledPin, LOW); } 

}

Was ist an diesem Arduino programm falsch?

void setup() { pinMode(13, OUTPUT); pinMode(12, INPUT); }

void loop() { if ( 12 = HIGH) digitalWrite(13, HIGH); }

Fehlermeldung: Arduino: 1.6.8 (Windows 10), Board: "Arduino/Genuino Uno"

C:\Users-----------\Desktop\Arduino Projekte\IF_Befehl_Test\IF_Befehl_Test.ino: In function 'void loop()':

IF_Befehl_Test:7: error: lvalue required as left operand of assignment

if (12 = HIGH) digitalWrite(13, HIGH);

    ^

exit status 1 lvalue required as left operand of assignment

Dieser Bericht wäre detaillierter, wenn die Option "Ausführliche Ausgabe während der Kompilierung" in Datei -> Voreinstellungen aktiviert wäre.

...zur Frage

Warum stoppt der Arduino Infrarotempfänger plötzlich mit der Datenausgabe?

Hallo liebe Community, Vor kurzem habe ich eine Schaltung zur Steuerung 2 Motoren mithilfe von Infrarot aufgebaut und einen Code geschrieben.

Vom Prinzip her funktioniert der Code und die Schaltung. Nun kommt es aber zu folgendem Problem: Immer wenn ich per Fernbedienung den Code sende, er soll einen Motor vorwärts und einen Rückwärts laufen lassen, dann macht er das, nimmt aber keine weiteren Signale mehr auf und ich muss das Board zurücksetzen...

Die Motoren Simmuliere ich mit jeweils 2 LEDs (Eine vorwärts, eine Rückwärts).

Kann mir jemand helfen?

Hier der Code :

#include <IRremote.h>;

const int RFENGINE = 5;

const int RBENGINE = 10;

const int LFENGINE = 6;

const int LBENGINE = 9;

const int RECV_PIN = 3;

IRrecv(RECV_PIN);

decode_results results;

void setup()

{

pinMode(RFENGINE,OUTPUT);

pinMode(RBENGINE,OUTPUT);

pinMode(LFENGINE,OUTPUT);

pinMode(LBENGINE,OUTPUT);

irrecv.enableIRIn();

Serial.begin(9600);

}

void startEngine(int leftf,int leftb, int rightf, int rightb)

{

analogWrite(LFENGINE,leftf);

analogWrite(LBENGINE,leftb);

analogWrite(RFENGINE,rightf);

analogWrite(RBENGINE,rightb);

}

void loop()

{

if(irrecv.decode(&results))

{

  Serial.println(results.value,DEC);

  if(results.value == 16718055)   //Vorwärts

  {

     startEngine(100,0,100,0);

   }

   else if(results.value == 16726215)  //Rechtsum

   {

     startEngine(100,0,0,100);

    }

    else if(results.value == 16716015)  //Linksum

    {

      startEngine(0,100,100,0);

    }

      else if(results.value == 16730805) //Zurück

    {

       startEngine(0,100,0,100);

     }

    else

      Serial.println("UNBEKANNTER BEFEHL");

    irrecv.resume();

    }

}

Lg Niko

...zur Frage

Was möchtest Du wissen?