mehrere Funktionen mit einem Taster ausführen?

Hallo

Ich möchte, dass ich wenn ich den Taster 1x drücke, die LEDs Weiss sind und wenn ich ihn 2x drücke, dass sie z.B. Blau sind. Wie kann ich so etwas machen?

Ich habe den Code, damit sie weiss sind schon einmal. Doch wie kann ich bei 2x drücken eine Funktion ausführen?



#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif




int tasterPin = 5; //taster an pin5






#define PIN        4 // An welchem Pin ist die LED angeschlossen


#define NUMPIXELS 60 // Anzahl LEDs




Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);


#define DELAYVAL 30 // Definiert, dass die Variabel DELAYVAL 30millisekunden pause bedeutet




void setup() {


  //
  Serial.begin(115200);
  Serial.println();
  Serial.println("ESP gestartet");


  pinMode(tasterPin, INPUT_PULLUP);
  //




  //einstellungen für LEDs
#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
  clock_prescale_set(clock_div_1);
#endif
  // nur, falls man eine externe energiequelle hat


  pixels.setBrightness(255); // Helligkeit auf 50 - höchster wert : 255
  pixels.begin();
}
//einstellungen für LEDs ende


void loop() {




  if (digitalRead(tasterPin) == LOW) {
    Serial.println("Status: Taster Gedrückt");
    Serial.println("Effekt wird abgespielt...");
    delay(100);


    pixels.clear(); // Schaltet alle Pixel auf "OFF"


    for (int i = 0; i < NUMPIXELS; i++) { // Für jede LED...


      //Das ist ein RGB LED streifen das R steht für ROT G = Grün und B = Blau
      pixels.setPixelColor(i, pixels.Color(255, 255, 255));


      pixels.show();   // Sendet die geänderten LED farben zum LED Streifen (neue Farbe)


      delay(DELAYVAL); //pause
    } //...


    //
    delay(30000); //30000 Millisekunden weiss (wartet 10000 Millisekunden)
    //


    for (int i = 0; i < NUMPIXELS; i++) { // Für jede LED...


      pixels.setPixelColor(i, pixels.Color(0, 0, 0));


      pixels.show();


      delay(DELAYVAL); // Pause bevor es neu startet


    }


  } else {
    Serial.println("Status: Taster nicht Gedrückt");
    delay(100);
  }




}//...

Danke für die Antworten :)

LG

Computer, Technik, Elektronik, programmieren, Arduino, Technologie, taster, ESP8266, Spiele und Gaming, Arduino IDE
C# Exception aus Fire and Forget Task behandeln?

Ich versuche mit Selenium eine Website zu überwachen und damit zu interagieren. Dafür gibt es eine Liste mit Dingen die überwacht werden sollen und eine Liste mit Observern die dafür zur Verfügung stehen. Bei dem überwachen können gelegentlich Fehler auftreten, z.B. wenn Chrome crashed. Dann soll alles neu gestartet werden. So sieht es aktuell aus:

        public async Task Observe(List<string> objectsToObserve, CancellationToken token)
        {
            Exception exception = null;
            var objectsQueue = new Queue<string>(objectsToObserve);
            var observerQueue = new Queue<Observer>(_observers);
            while (true)
            {
                while (!observerQueue.Any())
                {
                    await Task.Delay(10);
                }
                if (exception is not null)
                    throw exception ;
                if (token.IsCancellationRequested)
                    return;
                var objectToObserve = objectsQueue.Dequeue();
                var observer = observerQueue.Dequeue();
                _ = observer.Observe(objectToObserve).ContinueWith(x =>
                {
                    if (x.IsFaulted)
                        exception = x.Exception;
                    objectsQueue.Enqueue(objectToObserve);
                    observerQueue.Enqueue(observer);
                });
            }
        }  

Wenn dieser Task ne Exception wirft, wird neugestartet. Da das observen aber nicht awaitet wird, weil mehrere davon parallel laufen sollen, kann ich die Exception nicht richtig behandeln. Geht das irgendwie besser?

Computer, Schule, programmieren, C Sharp
Schlechtbezahlten Job behalten oder wechseln?

Ich hab ne HTL Ausbildung absolviert und war danach Entwickler im Backend-Bereich wo ich nach ca einem Jahr gehen musste da die Leistung nicht gepasst hat. Danach bin ich ins Frontend gewechselt bei einem anderen Unternehmen und dort war wiederum mir die Arbeit zu eintönig weil ich primär „nur“ mit Wordpress gearbeitet habe (war ne Web-Agentur wo meist mit Wordpress gearbeitet wird). Zwar war der Job nicht so schlecht für mich, aber auf Dauer gesehen eintönig. Mein Chef hat gemerkt, dass ich nicht so Mühe gegeben habe (vermutlich weil mir die Tätigkeiten zu eintönig waren und dementsprechend die Motivation nicht so oben war) und auch dort wurde das Dienstverhältnis beendet.

Danach hab ich das Wirtschaftsinformatik Studium begonnen und nun arbeite ich als Frontend-Entwickler bei einem anderen Unternehmen. Hier arbeite ich wieder mit Wordpress, bekomme aber deutlich weniger bezahlt, sogar weniger als ein typischer HTL-Absolvent. Ich bekomme so im Schnitt 2200-2300 brutto (Vollzeitbasis).
Da ich aber auch merke wie eintönig es ist den ganzen Tag nur Webseiten „entwickeln“ (also Wordpress und CSS halt, vllt hier und da mal Javascript), überlege ich freiwillig zu wechseln.
Da aber mein Lebenslauf schon zeigt, dass ich bei keinem der 3 Unternehmen länger als 1 1/2 Jahre geblieben bin, könnte dies einen schlechten Eindruck machen. Was würdet ihr machen?

Würdet ihr diesen Job mal für 1-2 Jahre runterbiegen und erst dann wechseln (und freiwillig aufs gute Geld verzichten und auch der Verzicht auf die Erweiterung der Programmierkenntnisse, außer CSS halt) oder jetzt schon schauen, dass man wo positioniert ist um dann schnell aufzusteigen, insbesondere später dann mit einem Wirtschaftsinformatik Studium Abschluss?

Schule, IT, programmieren, Karriere, Ausbildung und Studium, Beruf und Büro
Ausbildung zum Kaufmann für IT-Systemmanagement (schwer)?

Jo Leute, habe ein sehr großes Problem. Ich habe im Jahre 2020 meine Ausbildung zum Kaufmann für IT-Systemmanagement angefangen, ohne Vorkenntnisse in IT. Anfangs beim Arbeiten hat es mir persönlich noch Spaß gemacht, im Büro eingesetzt zu werden. Ich hatte guten Kontakt zu Kunden, Bestellungen ausgelöst, Liefertermine angefragt, Angebote verschickt usw. Also ein herkömmlicher Bürojob. Seitdem ich in der Schule bin werde ich tagtäglich mit Programmiersprachen vollgedrückt, anfangs kam ich so mit einer 4 durch. Aber jetzt im 2 Lehrjahr und dem Vorletzten Block bin ich am Verzweifeln, ich habe 4 Programmiersprachen und bin an einem Punkt angekommen, das ich müde geworden bin. Ich stehe in 2 der Fächer bei einer 5 und es macht mich sauer dass ich im Unternehmen kein Programmieren habe. Es macht einen Kaputt und ich weiß nicht mehr was ich tun soll, ich will gerne die Ausblidung beenden, aber fühle mich nutzlos… was kann ich am besten tun? Also lernen usw. Bringt nichts, ich verstehe die Logik dahinter nicht und verstehe auch nicht wieso ich diese Fächer überhaupt habe obwohl ich das im Unternehmen nicht anwende. 2 der Programmierfächer sind Wahlfächer, zählen die auch als Richtige Note? Und ab wann bekommt man keinen Abschluss? Es kommt so vor das ich mich für ist net interessiere, es interessiert mich. Aber das Programmieren macht mich einfach kaputt….

Schule, IT, programmieren, Ausbildung, Ausbildung und Studium, Beruf und Büro
Arduino integer mit binärem Wert in decimal umwandeln?

// Probleme wurden gelöst. Teil des Problems war dass ich den Chip außversehen nach dem umprogrammieren eine Reihe zu weit nach Oben gemacht habe... Leichtsinnsfehler... :)

Hallo. Bin gerade an einem Projekt bei dem ich LED's mit einem 8Bit shift register zum leuchten bringen will.

1 bedeutet leuchten und 0 bedeutet aus.

Jetzt will ich einen Wert wie "10000001" angeben können und die LED's werden direkt so eingeschalten wie es im int aussieht.

Gerade im Moment probiere ich es so zu lösen dass ich der ShiftOut Funktion den decimalen Wert gebe welche diese dann wieder in decimal umwandelt und raus schiebt:

  int bits = 10000001;

  digitalWrite(latchPin, LOW);
  //Binary to decimal Versuch
  int decimal =
  (((bits / 10000000U) % 10) * 128)
  + (((bits / 1000000U) % 10) * 64)
  + (((bits / 100000U) % 10) * 32)
  + (((bits / 10000U) % 10) * 16)
  + (((bits / 1000U) % 10) * 8)
  + (((bits / 100U) % 10) *4)
  + (((bits / 10U) % 10) *2)
  + ((bits / 1U) % 10);

  shiftOut(dataPin, clockPin, MSBFIRST, decimal);

  digitalWrite(latchPin, HIGH);

Ich bin mir sicher dass man das wesentlich effizienter und schlauer lösen kann. Unter anderem funktioniert mein Code nicht mal... wenn ich ihn laufen lasse sind die LED's volgendermaßen angeschaltet: "00010000"...

Würde mich über Hilfe freuen und danke schon mal im Vorraus.

Liebe Grüße, Leo

Bild zum Beitrag
Computer, Technik, Programm, programmieren, Arduino, Code, Informatik, Technologie, binär, Integer, Spiele und Gaming

Meistgelesene Beiträge zum Thema Programmieren