-
        

Ergebnis 1 bis 7 von 7

Thema: Einfaches StatusLED Programm

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    28.02.2012
    Beiträge
    13

    Einfaches StatusLED Programm

    Anzeige

    Hallo Leute,

    ich wollte ein einfaches Programm schreiben um die Taster und die StatusLED zu testen.
    Beim start des Porgramms soll die taste GREEN sein. wenn ich eine taste drücke soll sie auf RED. danach wieder auf grün und warten bis ich wieder eine taste drücke.

    Code:
    include "asuro.h"
    	
    	int zaehler;
    	
    
    
    
    
    int main(void)
    {
    	Init();
    	
    	zaehler = 0;
    	
    	while (zaehler < 10)
    	
    	{
    	  while (PollSwitch() == 0)  
    	  
    	        { StatusLED(GREEN);}
    		
    		StatusLED(RED);	 	
    	   
    	  zaehler = zaehler+1;
    	}
    	
    
    	while(1);
    	return 0;
    }
    das habe ich geschrieben. beim compilieren bringt er immer folgende meldeung:

    Code:
    In file included from asuro.h:34,
                     from test.c:1:
    c:/winavr-20100110/lib/gcc/../../avr/include/avr/signal.h:36:2: warning: #warning "This header file is obsolete.  Use <avr/interrupt.h>."
    test.c: In function 'main':
    test.c:22: error: expected '(' before 'tase'
    test.c:22: error: 'tase' undeclared (first use in this function)
    test.c:22: error: (Each undeclared identifier is reported only once
    test.c:22: error: for each function it appears in.)
    make: *** [test.o] Error 1
    
    > Process Exit Code: 2
    > Time Taken: 00:00
    ich hatte zuvor echt ne variable taste, aber die habe ich entfernt. jetzt habe ich gar kein tase(falsch egschrieben für taste) und er bringt immer dieselbe meldung?!

    kann mir jd helfen?

    bin noch anfänger, seid bitte nicht so hart ;P

    grüße
    Geändert von radbruch (16.06.2012 um 19:33 Uhr)

  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
    Hallo

    Bitte verwende die Code-Tags anstelle von Quote.

    signal.h wurde inzwischen durch interrupt.h ersetzt. In asuro.h kannst du das anpassen:
    Code:
    #include <avr/io.h>
    #include <avr/interrupt.h>
    //#include <avr/signal.h>
    #include <stdlib.h>
    Vor include fehlt das #:

    Code:
    #include "asuro.h"
    
    int zaehler;
    
    int main(void)
    {
    	Init();
    
    	zaehler = 0;
    
    	while (zaehler < 10)
    	{
    		StatusLED(GREEN);
    		while (PollSwitch() == 0);
    
    		StatusLED(RED);
    		while (PollSwitch() != 0);
    
    		zaehler = zaehler+1;
    	}
    
    	StatusLED(YELLOW);
    	while(1);
    	return(0);
    }
    (ungetestet)

    jetzt habe ich gar kein tase
    Datei gespeichert vor dem Kompilieren?

    Gruß

    mic

    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
    28.02.2012
    Beiträge
    13
    vielen dank radbruch.
    das mit dem code-tag beherzige ich in zukunft.

    dein programm funktioniert einwandfrei und beim nächsten mal werde ich auch das programm erst speichern bevor ich es kompiliere

    eine frage habe ich noch, bei meinem programm oben, ist er nach dem ich eine taste gedrückt hatte von GREEN auf RED, aber dann nicht mehr auf GREEN. ich nehme an, dass er dann einfach nicht in die while-schleife gegangen ist.
    ich versteh das nicht so ganz, wird pollswitch nich für kurze zeit eins und dann wieder null, d.h. sobald es eins wird verlässt er die schleife (bei kurzem drücken) ist pollswitch wieder null und sollte doch im nächsten schleifendurchgang zaehler +1 wieder GREEN ausgeben?

    auf jeden fall ist deine lösug eine sehr elegantere art !
    Geändert von radbruch (21.06.2012 um 15:48 Uhr)

  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
    Hallo

    Code:
    {
    	while (PollSwitch() == 0) { StatusLED(GREEN);}
    		
    	StatusLED(RED);	 	
    	zaehler = zaehler+1;
    }
    Solange kein Tastendruck erkannt wird, wird die whlie-Schleife ausgeführt. Sobald die Taste erkannt wird, ist das Programm nach 10 Runden fertig. Das geht rasend schnell.

    PollSwitch() liefert bei jedem Aufruf den ermittelten Tastenwert:

    k1=32
    k2=16
    k3=8
    k4=4
    k5=2
    k6=1

    k6 ist beim Schalter. Mehrere Taster gleichzeitig liefern die Summe der Einzelwerte, wenn alles richtig funktioniert.

    Gruß

    mic

    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
    28.02.2012
    Beiträge
    13
    also mit rasend schnell meinst du, dass einmal kurz drücken bedeutet. dass er die while schleife direkt 10 mal ausführt (also für den zeitschlitz in dem ich einen taster gedrückt halte)?

  6. #6
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.782
    Blog-Einträge
    8
    Rasend schnell bedeutet, dass das Programm vielleicht schon während des Tastenprellen bei Betätigen der Taste auf zehn gezählt hat.

    Während du die Taste gedrückt hältst wird die (ablehnende) while-Schleife nicht mehr betreten. Das funktioniert "ausgeschrieben" etwa so:

    {
    taste=PollSwitch();
    if(taste == 0) while(taste == 0) {taste=PollSwitch(); StatusLED(GREEN);}

    StatusLED(RED);
    zaehler = zaehler+1;
    }
    Geändert von radbruch (21.06.2012 um 20:13 Uhr)

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

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    28.02.2012
    Beiträge
    13
    cool, vielen dank. ein so einfaches programm und dann doch wieder viel gelernt

Ähnliche Themen

  1. Hilfe rn-control suche einfaches Led ein aus programm
    Von ikamonte im Forum Schaltungen und Boards der Projektseite Mikrocontroller-Elektronik.de
    Antworten: 0
    Letzter Beitrag: 23.05.2012, 19:13
  2. Biete Job Suche Programmierer für Attiny 13-20/ einfaches Programm
    Von bebop im Forum Jobs/Hilfen/Stellen - Gesuche und Angebote
    Antworten: 2
    Letzter Beitrag: 17.12.2010, 00:11
  3. einfaches programm will nicht
    Von chineseboy im Forum Asuro
    Antworten: 6
    Letzter Beitrag: 29.03.2010, 18:57
  4. Einfaches Programm - Denkfehler gesucht
    Von carrera1988 im Forum Robby RP6
    Antworten: 2
    Letzter Beitrag: 29.02.2008, 09:50
  5. Einfaches Timing-Programm - brauche Hilfe
    Von Powell im Forum Elektronik
    Antworten: 6
    Letzter Beitrag: 23.08.2006, 21:58

Berechtigungen

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