Wie kann ich bei Arduino mit einer Taste eine LED ein oder ausschalten?

1 Antwort

Mit einer Variable, die zu zusammen mit der LED umschaltet. Bei Tastendruck kann dann überprüft werden, ob die LED an oder aus ist und wird dann dementsprechend umgeschaltet .

wie kann ich zwei programme (sketes) zusammenführen Arduino?

ich will zwei programme zusamen führen wie kann ich das ?(beide programme fonktioniren einzeln) Hier sind die programme: 1. #include #include

Servo ServoMotor; char* password = "123"; // change the password here, just pick any 3 numbers char* password1 = "456"; char* password2 = "789"; int position = 0; const byte ROWS = 4; const byte COLS = 4; char keys[ROWS][COLS] = { {'1','2','3','A'}, {'4','5','6','B'}, {'7','8','9','C'}, {'*','0','#','D'} };

byte rowPins[ROWS] = { 8, 7, 6, 9 }; byte colPins[COLS] = { 5, 4, 3, 2 }; Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); int RedpinLock = 12; int GreenpinUnlock = 13;

void setup() { pinMode(RedpinLock, OUTPUT); pinMode(GreenpinUnlock, OUTPUT); ServoMotor.attach(11); LockedPosition(true); }

void loop() { char key = keypad.getKey(); if (key == '*' || key == '#') { position = 0; LockedPosition(true); } if (key == password[position]) { position ++; } if (key == password1[position]) { } if (key == password2[position]) { position ++; } if (position == 3) { LockedPosition(false); } delay(100); } void LockedPosition(int locked) { if (locked) { digitalWrite(RedpinLock, HIGH); digitalWrite(GreenpinUnlock, LOW); ServoMotor.write(11); } else { digitalWrite(RedpinLock, LOW); digitalWrite(GreenpinUnlock, HIGH); ServoMotor.write(90); } }

2.

int licht;

void setup() { Serial.begin(9600); pinMode(13,OUTPUT);

}

void loop() { // put your main code here, to run repeatedly: licht = analogRead(0); Serial.print (licht),delay;

if (licht < 940) { digitalWrite(13,HIGH); } else { digitalWrite(13, LOW); }}

...zur Frage

Arduino delay für eine Sekunde?

Hallo, ich wollte eine Uhr für einen display programmieren und diese mit einer Fernbedinung ansteuern. Nur habe ich ein Problem, meine Uhr ist etwas langsamer als eine normale Uhr (Atomuhr). Obwohl ich einen Delay von 1000 habe.

ich bin im besitz des Arduino elegoo Mega 2560

Falls es interessant ist, kopiere ich hier den kompletten code:

#include <LiquidCrystal.h>

#include "IRremote.h"

LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

int offTimer;

int onTimer;

int s=15; //sekunden

int m=49; //minuten

int h=19; //stunden

int tag=3; //tage

int monat=6; //monate

int jahr=2018; //Jahr

int receiver = 6;

int lcdsize[] = {16, 2};

IRrecv irrecv(receiver);    

decode_results results;    

void translateIR() // takes action based on IR code received

// Beschreibt Remote-IR-Codes

{

 switch(results.value)

 {

 case 0xFFA25D: onTimer++; offTimer=0; break;

 case 0xFFE21D: offTimer++; onTimer=0; break;

 case 0xFF629D: Serial.println("VOL+"); break;

 case 0xFF22DD: Serial.println("FAST BACK");   break;

 case 0xFF02FD: Serial.println("PAUSE");   break;

 case 0xFFC23D: Serial.println("FAST FORWARD");  break;

 case 0xFFE01F: Serial.println("DOWN");   break;

 case 0xFFA857: Serial.println("VOL-");   break;

 case 0xFF906F: Serial.println("UP");   break;

 case 0xFF9867: Serial.println("EQ");   break;

 case 0xFFB04F: Serial.println("ST/REPT");   break;

 case 0xFF6897: Serial.println("0");   break;

 case 0xFF30CF: Serial.println("1");   break;

 case 0xFF18E7: Serial.println("2");   break;

 case 0xFF7A85: Serial.println("3");   break;

 case 0xFF10EF: Serial.println("4");   break;

 case 0xFF38C7: Serial.println("5");   break;

 case 0xFF5AA5: Serial.println("6");   break;

 case 0xFF42BD: Serial.println("7");   break;

 case 0xFF4AB5: Serial.println("8");   break;

 case 0xFF52AD: Serial.println("9");   break;

 case 0xFFFFFFFF: Serial.println(" REPEAT");break; 

 default:

   Serial.println(" other button  ");

 }

}

void setup() {

irrecv.enableIRIn(); // Startet den Empfänger

lcd.begin(lcdsize[0], lcdsize[1]);

}

void loop() {

 if (irrecv.decode(&results)) // Haben wir ein IR-Signal erhalten?

 {

   translateIR();

   irrecv.resume(); // Erhalte den nächsten Wert

 } 

 delay(990);

 lcd.clear();

 lcd.setCursor(0, 0);

 lcd.print("----");

 if(h<10){

 lcd.print("0");

 }

 lcd.print(h);

 lcd.print(":");

 if(m<10){

 lcd.print("0");

 }

 lcd.print(m);

 lcd.print(":");

 if(s<10){

 lcd.print("0");

 }

 lcd.print(s);

 lcd.print("----");

 lcd.setCursor(0, 1);

 if(tag<10){

 lcd.print("0");

 }

 lcd.print(tag);

 lcd.print(".");

 if(monat<10){

 lcd.print("0");

 }

 lcd.print(monat);

 lcd.print(".");

 lcd.print(jahr);

 s++;

 if(s>=60){

 m++;

 s=0;

 }

 if(m>=60){

 h++;

 m=0;

 }

 if(h>=24){

 tag++;

 h=0;

 }

 if(tag==31&monat==4){

 monat++;

 tag=1;

 }

 if(tag==31&monat==6){

 monat++;

 tag=1;

 }

 if(tag==31&monat==9){

 monat++;

 tag=1;

 }

ab hier kommen noch ca. 40 weitere Zeilen.

...zur Frage

Wie kann ich den Fehler bei diesem Arduino LED Spiel Projekt beheben?

In meinen Projekt geht es darum, dass das Licht von links nach rechts über 5 LEDs pendelt und dabei bei der roten in der Mitte der Taster gedrückt werden muss, schafft man dies verschnellert sich das spiel und man erhält mehr punkte, falls nicht hat man verloren. Ich habe auch keine Probleme es zu kompilieren doch bei mir tut sich trotzdem nichts ein ich das Programm raufspiele. Kann mir bitte jemand helfen und sagen wie ich diesen Fehler beheben kann und mein progaramm zum laufen bringe kann ? code folgt:

int Led1Pin = 2; //pin von der 1. LED
int Led2Pin = 3; //pin von der 2. LED
int Led3Pin = 4; //usw.
int Led4Pin = 5;
int Led5Pin = 6;

int Taster = 8; //pin vom Taster

//Status des Taster zuletzt
boolean TasterStatus = LOW;

//welche LED an ist
int WoLicht = 0;

//zeit zwischen dem angehen zweier LEDs
int pause = 1000;

//zeit vom letzen angehen
long letzMove = millis();



//Updatet wo das licht gerade ist
void move(int WoLicht)
{
 //schaltet alle LEDs aus 
for (int x = Led1Pin; x <= Led5Pin;x++)
{
  digitalWrite(x, LOW);
}

//Schaltet die LED an
digitalWrite(WoLicht + 1, HIGH);
}

void neuesSpiel()
{
  WoLicht = 0;
  pause = 1000;
  Serial.println("Neues Spiel: 1000");
}



void setup()
{
  pinMode(Led1Pin, OUTPUT);
  pinMode(Led2Pin, OUTPUT);
  pinMode(Led3Pin, OUTPUT);
  pinMode(Led4Pin, OUTPUT);
  pinMode(Led5Pin, OUTPUT);
  pinMode(Taster, INPUT);
  
  Serial.begin(9600);
  
  //startet neues spiel
  neuesSpiel();
}

void loop()
{
  //bewegt das licht
  if(millis() - letzMove >= pause)
  {
    letzMove = millis(); //wann das licht position wechselt
    
    WoLicht++; //inkrementiert die position des lichts
    if(WoLicht >= 6) WoLicht = 1;
    
    move(WoLicht);//position vom licht (der angeschalteten LED)
  }
  
  //wenn der taster gedrückt wird...
  if(digitalRead(Taster) == HIGH && TasterStatus == LOW)
  {
    //wenn in der mitte gedrückt wurde wirds verschnellert
    if(WoLicht == 3)
    {
      digitalWrite(Led3Pin, LOW);
      delay(50);
      digitalWrite(Led3Pin, HIGH);
      //verschnellert das spiel
      if(pause > 700)
      {
        pause -= 100;
      } else if (pause > 500)
      {
        pause -= 50;
      } else if (pause > 300)
      {
        pause -= 25;
      } else if (pause > 10)
      {
        pause -= 10;
      } else if (pause > 1)
      {
        pause -= 1;
      }
      
      Serial.print("Punkte: ");
      Serial.println(pause);
      
    } else //wenn nicht rechtzeitig gedrückt wurde zeigt es die punkte und startet neues spiel
    {
      //verloren
      Serial.println(" GAME OVER ");
      Serial.print("Deine erreichte Punktezahl ");
      Serial.println(pause);
      
      //lässt die LED blinken an der gestoppt wurde
      for (int x = 0; x <= 10; x++)
      {
        if(digitalRead(WoLicht + 1) == LOW)
        {
          digitalWrite(WoLicht + 1, HIGH);
        }
        else
        {
          digitalWrite(WoLicht + 1, LOW);
        }
        delay(200);
      }
      
      //zeigt anhand
...zur Frage

Arduino Uno Feuchtigkeitssensor?

Ich habe einen analogen Feuchtigkeitssensor an den A0 von von einem Arduino Uno angeschlossen mit einem Display. Doch auf dem Display steht, wenn der sensor

aus dem Wasser ist etwa 200 bis 215 % an und wenn der im Wasser ist zeig der zwischen etwa -170 und -215 an. Kann mir bitte einer Helfen?

Danke schon mal im voraus

Das ist der Code:

/

Pflanzuino V.2.0

Autor: Ardutronix

https://www.ardutronix.de

/

int sensor_pin = A0;

int output_value;

#include <SPI.h>

#include <Wire.h>

#include <Adafruit_GFX.h>

#include <Adafruit_SSD1306.h>

#define OLED_RESET 4

Adafruit_SSD1306 display(OLED_RESET);

void setup() {

pinMode(7, OUTPUT);

display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //

display.display();

delay(2000);

// Clear the buffer.

display.clearDisplay();

display.setTextSize(1);

display.setCursor(0, 0);

display.setTextColor(WHITE);

display.setCursor(5,10);

display.setTextSize(2);

display.println("Ardutronix");

display.display();

delay(5000);

display.clearDisplay();

}

void loop() {

output_value= analogRead(sensor_pin);

output_value = map(output_value,500,10,0,210);

display.setCursor(15,0);

display.setTextSize(1);

display.println("Pflanzuino V.2.0");

display.setCursor(50,15);

display.setTextSize(2);

display.print(output_value);

display.println("%");

display.display();

delay(1000);

display.clearDisplay();

if (output_value <50 )

{

digitalWrite(7, LOW);

}

else

{

digitalWrite(7, HIGH); //

}

}













...zur Frage

Arduino HR-S04 Entfernungsmesser misst nicht korrekt?

Hallo,

Ich habe einen Arduino UNO und habe mir einen Entfernungsmesser (HR-S04) angeschlossen, ich habe das ganze programmiert und will nun auf dem Seriellen Monitor anzeigen lassen, wie viele cm die Entfernung beträgt. Wenn ich nun den Seriellen Monitor starte und den Entfernungsmesser irgendeine Distanz messen lasse, wird dort immer ein Wert über 18000cm angezeigt, das kann grundsätzlich nicht stimmen, es wäre nett, wenn ihr mir helfen würdet! :D (Bilder dazu und Code sind unten)

Das ist mein Code:

long laenge;

long cm;

void setup() 

{

 Serial.begin (9600);

 pinMode(7,OUTPUT);

 pinMode(8,INPUT);

}

void loop() 

{

 digitalWrite(7,LOW);

 delayMicroseconds(2);

 digitalWrite(7,HIGH);

 delayMicroseconds(5);

 digitalWrite(7,LOW);

 laenge = pulseIn(8,HIGH);

 Serial.print(cm);

 Serial.println("cm");

cm=laenge; //Ich weiß, dass ich an dieser Stelle warscheinlich etwas ändern muss, ich weiß nur nicht was...

 delay(1000);

}

Mfg Alex

...zur Frage

Was möchtest Du wissen?