-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: Arduino Anfänger hat frage

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    25.02.2012
    Beiträge
    19

    Arduino Anfänger hat frage

    Anzeige

    hallo,

    ich spiele zur zeit etwas mit einem Arduino rum, macht ja mega spaß, ich bin recht neu in diesem thema

    ich habe ein paar Beispiel scripts getestet und wollte jetzt mal versuchen mit zwei Tastern zwei led zu schalten

    also s1 = LED1 on
    s2 = LED2 on

    mein scipt
    Code:
    const int buttonPin1 = 2;     
    const int buttonPin2 = 3;
    const int ledPin1 =  13;      
    const int ledPin2 =  12;
    
    
    int buttonState1 = 0; 
    int buttonState2 = 0; 
    
    void setup()
      {
        pinMode(ledPin1, OUTPUT);
        pinMode(buttonPin1, INPUT);
      }
    
    void loop()
      {
        buttonState1 = digitalRead(buttonPin1);
        buttonState2 = digitalRead(buttonPin2);
      if 
             (buttonState1 == HIGH)
      {   
           
        digitalWrite(ledPin1, HIGH);
        
      } 
      else 
          {
              digitalWrite(ledPin1, LOW);
          }
      
      if 
         (buttonState2 == HIGH)
          {   
           
              digitalWrite(ledPin2, HIGH);
          } 
      else 
       {
              digitalWrite(ledPin2, LOW);
       }       
    }
    nur egal welchen taster ich drücke es geht immer nur led1 an..

    kan mir jemand erklären warum und eine lösuchg zeigen???

    grus Tom

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.782
    Blog-Einträge
    8
    void setup()
    {
    pinMode(ledPin1, OUTPUT);
    pinMode(buttonPin1, INPUT);
    }


    Wo sind die Einstellungen für LED2 und Taste2?

    Vom arduino habe ich keine Ahnung. Wird setup() automatisch aufgerufen? Gibts da keine main()-Funktion?

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    25.02.2012
    Beiträge
    19
    sorry da hat was gefehlt aber es geht trotzdem nicht

    Code:
    const int buttonPin1 = 2;     
    const int buttonPin2 = 3;
    const int ledPin1 =  13;      
    const int ledPin2 =  12;
    
    
    int buttonState1 = 0; 
    int buttonState2 = 0; 
    
    void setup()
      {
        pinMode(ledPin1, OUTPUT);
        pinMode(buttonPin1, INPUT);
        pinMode(ledPin2, OUTPUT);
        pinMode(buttonPin2, INPUT);
      }
    
    void loop()
      {
        buttonState1 = digitalRead(buttonPin1);
        buttonState2 = digitalRead(buttonPin2);
      if 
             (buttonState1 == HIGH)
      {   
           
        digitalWrite(ledPin1, HIGH);
        
      } 
      else 
          {
              digitalWrite(ledPin1, LOW);
          }
      
      if 
         (buttonState2 == HIGH)
          {   
           
              digitalWrite(ledPin2, HIGH);
          } 
      else 
       {
              digitalWrite(ledPin2, LOW);
       }       
    }

  4. #4
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.782
    Blog-Einträge
    8
    Code:
    void loop()
    {
    	digitalWrite(ledPin1, digitalRead(buttonPin1));
    	digitalWrite(ledPin2, digitalRead(buttonPin2));
    }
    
    oder überkreuz:
    
    void loop()
    {
    	digitalWrite(ledPin2, digitalRead(buttonPin1));
    	digitalWrite(ledPin1, digitalRead(buttonPin2));
    }
    (Ich vermute, der Rückgabewert von digitalRead() ist nicht immer HIGH oder LOW.)

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    25.02.2012
    Beiträge
    19
    nein ich weis zwar nicht wie du das meinst aber, ich habe es mal getestet und es geht auch nicht

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    09.05.2007
    Beiträge
    99
    Ich finde den Vorschlag von radbruch gut.
    Hast Du wirklich auch überkreuz getestet?
    Wenn Du schreibst "geht auch nicht", heißt das, dass dann LED1 nicht leuchtet?
    Falls aber LED1 (überkreuz) leuchtet dann ist einfach LED2 kaputt oder hat keinen Kontakt.

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    25.02.2012
    Beiträge
    19
    Hallo,

    also ich habe des jetzt mal getestet aber es ändert sich nix, hier mein versuchaufbau

    Klicke auf die Grafik für eine größere Ansicht

Name:	Untitled Sketch_Steckplatine.jpg
Hits:	12
Größe:	77,8 KB
ID:	23992

    drücke ich button 1 leuchtet led eins
    drücke ich butten 2 leuchtet led eins

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    25.02.2012
    Beiträge
    19
    Hat niemand noch eine erklärung???

    ich verzweifel fast

  9. #9
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.782
    Blog-Einträge
    8
    Code:
    void loop()
    {
    	digitalWrite(ledPin2, HIGH);
    }
    Wie soll eigentlich die Tasterbeschaltung funktionieren? Ein gemeinsamer PullDown für beide Taster? Zeichne das mal bitte als Schaltbild.

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  10. #10
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    67
    Beiträge
    1.118
    Blog-Einträge
    1
    lege doch mal auf die Eingangspins für die Taster einen R 4,7k...10k gegen +5V , es dürfte aber schon "ButtonPin1 /bzw 2 = HIGH" im Setup {} reichen um den PullUP zu aktivieren und schalte den Taster gegen GND. Nur musst man dann LOW statt HIGH als State bei der Auswertung einsetzen/auswerten

    Gruss OL

    Wenn es noch nicht geht schreib mich per PN an...

    hier das mit dem PullUP ausführlich
    void setup()
    {
    .......
    .......
    // jetzt Eingänge auf HIGH setzen
    digitalWrite(buttonPin1, HIGH); // PULLUP ON
    digitalWrite(buttonPin2, HIGH); // PULLUP ON

    }
    ....
    ........
    if (buttonState1 == LOW) // Jetzt LOW auswerten !!!! { ..dann LED1 ein...

    }
    Nachtrag : Bei den aktivierten internen PULLUPS benötigt der Taster keine weitere Beschaltung, an den ButtonPin ist nur der Taster gegen GND zulegen !
    Nun viel Erfolg !!
    Geändert von oderlachs (13.12.2012 um 10:16 Uhr)
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Anfänger verzweifelt an der Arduino Software | atan
    Von Sim0n im Forum Software, Algorithmen und KI
    Antworten: 12
    Letzter Beitrag: 29.02.2012, 16:46
  2. Anfänger hat Fragen...
    Von tomiliS im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 10
    Letzter Beitrag: 20.01.2009, 19:57
  3. Anfänger hat fragen zu interrupts
    Von Andy91 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 13.01.2008, 11:27
  4. Anfänger hat fragen zu C
    Von Sim Robot im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 5
    Letzter Beitrag: 11.01.2008, 21:01
  5. Anfänger hat Fragen ? Vorglühen Traktor
    Von Enterprise im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 0
    Letzter Beitrag: 29.10.2005, 12:51

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •