Variablen Wert zuweisen

Ich will meine Variable A zurück auf 0 setzen aber mein Arduino hört nicht auf weiter zu zählen.
Ich muss immer warten bis er weit genug subtrahiert bzw addiert hat.
Was mache ich falsch?

#include <Adafruit_NeoPixel.h>
#define PIN 2
#define NUMPIXELS 45

const int button = 4;
int buttonState = 0;
int A = 0;

Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_RGB + NEO_KHZ800);

void setup() {
 pinMode(button, INPUT);
 pixels.begin();
 pixels.setPixelColor(3, pixels.Color(0, 0, 0));
 pixels.show();
 digitalWrite(A, LOW);

}

void loop() {
 if (buttonState == HIGH) {
   buttonState = digitalRead(button);
   if((A > -1) && (A < 45)) {
   pixels.begin();
   pixels.setPixelColor(A, pixels.Color(0, 0, 150));
   pixels.show();
   A = A++;
   delay(500);
   }
   if (A > 44) {
     A = 44;
   }
 }
 if (buttonState == LOW) {
   buttonState = digitalRead(button);
   if((A > -1) && (A < 45)) {
   pixels.begin();
   pixels.setPixelColor(A, pixels.Color(0, 0, 0));
   pixels.show();
   A = A--;
   delay(500);
   }
   if (A < 0) {
     A = 0;
   }
 }

Xenoreaper:
Was mache ich falsch?

Auf Deine eigentliche Frage habe ich keine Antwort. Ich habe Deinen Sketch nicht gelesen.

Du solltest ihn in „code-Tags“ fassen, damit er in einer Festbreitenschrift und dargestellt wird und scrollbar ist. Du kannst das auch nachträglich tun: „Posting bearbeiten“ wählen, Code markieren und in der Symbolleiste </> klicken.

Gruß

Gregor

Leider sagst du nicht, was dein Code tun soll.
Also kann ich dir auch nicht sagen, wo was falsch läuft.

Aber etwas kann ich dir sagen:

A = A++;
Das ist etwas unsinnig.
Ein einfaches
A++;
oder
++A;
würde völlig reichen.

Das gilt natürlich auch für

A = A--;

Auch wundere ich mich ein wenig, warum du den Taster 2 mal im loop() abfragst....


Ich habe zweimal die Taster abfrage weil sich das Programm beschwert wenn ich eine break einbauen möchte.
Das Programm soll wenn man den Taster aktiviert hoch zählen und LEDs nacheinander einschalten und wenn man ihn deaktiviert runterzählen und die LEDs wieder ausschalten.

Das Problem ist nur das die Variable zu weit ins negative und zu weit ins positive weiter zählt und somit zu lange braucht um wieder aus- oder einzuschalten.

Ich habe das mal durchgekämmt...
Und dieses ist dabei übrig geblieben.
(ungetestet)

#include <Adafruit_NeoPixel.h>
#define PIN 2
#define NUMPIXELS 45

const byte button = 4;
unsigned int A = 0;

Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_RGB + NEO_KHZ800);

void setup() 
{
 pinMode(button, INPUT);
 pixels.begin();
 //pixels.setPixelColor(3, pixels.Color(0, 0, 0));
 pixels.show();
}

void loop() 
{
 if(digitalRead(button))
 {
   if(A < NUMPIXELS) pixels.setPixelColor(A++, pixels.Color(0, 0, 150));
 }else
 {
   if(A > 0) pixels.setPixelColor(--A, pixels.Color(0, 0, 0));
 }
 pixels.show();
 delay(500);
}

Vielen dank es funktioniert einwandfrei und ist genau was ich wollte

Schön!