Eine kleine Verzögerung zwischen die beide wert1,wert2 anpassungen durch PollSwitch wurde vielleicht (auch) helfen.
Code:... wert1 = PollSwitch (); Sleep(72); wert2 = PollSwitch (); ...
Eine kleine Verzögerung zwischen die beide wert1,wert2 anpassungen durch PollSwitch wurde vielleicht (auch) helfen.
Code:... wert1 = PollSwitch (); Sleep(72); wert2 = PollSwitch (); ...
Geändert von Valen (22.04.2011 um 22:34 Uhr) Grund: (auch)
@ radbruch: danke für deine schnelle und auch sehr zeit aufwendige hilfe (programm schreiben)! ich habe dein programm jetzt auf meinen asuro gespielt, jedoch treten dieselben probleme wie bei meinem programm auf. die lampe leuchtet grün, für die kurze zeit, in der , der taster gedrückt ist, leuchtet die lampe rot. lasse ich den taster nun wieder los, so leuchtet die lampe wieder grün...aber so soll es ja eigentlich nicht arbeiten. hast du vielleicht sonst noch eine idee?
Ich habe auch noch eine frage zu deinem programm: was bedeutet dieses " unsigned char status=GREEN,"?
@Valen: auch danke für deine hilfe! habe die pausen nun einmal in mein programm eingebaut, es funktioniert nach meinen eindruck etwas besser jedoch sind auch nach wie vor noch zu viele fehler! is das eigentlich kein problem wenn man solche pausen einbaut? dadruch wird doch alles insgesamt langsamer? hast du vielleicht sonst noch eine idee? ich probiere und probiere und komme einfach nicht weiter -.-
In der Datei asuro.h sind folgende Werte für die StatusLED definiert:was bedeutet dieses " unsigned char status=GREEN,"?
#define GREEN 1
#define RED 2
#define YELLOW 3
status ist eine vorzeichenlose 8bit-Variable deren Wert beim Anlegen im Speicher GREEN (also 1) ist. Ohne diese Zuweisung wäre der Wert der Variablen beim Programmstart undefiniert (, meist aber 0). Nach Init() leuchtet die StatusLED übrigends immer grün...
Upps, sorry. Das habe ich falsch umgesetzt. So sollte die StatusLED nur beim Drücken der Tasten ihre Farbe wechseln und nicht auch beim Loslassen:...aber so soll es ja eigentlich nicht arbeiten.
auch wieder ungetestetPHP-Code:
#include "asuro.h"
int main(void)
{
unsigned int wert1, wert2;
unsigned int wert3=0;
unsigned char status=GREEN;
Init();
while (1)
{
do
{
do
{
wert1 = PollSwitch ();
wert2 = PollSwitch ();
}while(wert1 != wert2); // wiederholen bis zweimal derselbe Wert gelesen wurde
}while(wert1 == wert3); // wiederholen bis sich der Wert geändert hat
wert3 = wert1; // neuen Wert merken
if(wert1 > 0)
{
if(status == GREEN) status = RED; else status = GREEN;
StatusLED(status);
}
}
return(0);
}
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Hallo,
nimm doch einfach ne boolsche variable und mach immer wenn der Knopf gedrückt ist led_farbe=!led_farbe
dann wird bei jedem Knopfdruck der Zustand von led_farbe gewechselt.
Anmerkung: Ich hab keinerlei Erfahrung mit dem Asuro, ich kann nur die Programmiersprache.
danke für eure Hilfe!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
aber ich habe jetzt über Ostern die Zeit genutzt und solange probiert, bis es funktioniert und die Lösung war: Ich habe als Bedingung statt "werte1 == wert2", "aktuellerwert = 0" genommen und jedem einlesen des aktuellen Wertes danach eine kleine Pause (200ms) einprogrammiert und siehe da, nahezu fehlerfrei!
aber trotzdem danke!!
Lesezeichen