Taster und LEDs reagieren nicht wie programmiert

Ich habe folgendes Problem: habe Programmiert

const int tasterPin = 2;
const int ledrot = 3;
const int ledgruen = 4;

void setup() {

pinMode(tasterPin, INPUT);
pinMode(ledrot, OUTPUT);
pinMode(ledgruen, OUTPUT);

}

void loop() {

if(digitalRead(tasterPin) == HIGH)

{
digitalWrite(ledgruen, HIGH;
digitalWrite(ledrot, LOW);
}
else
{
digitalWrite(ledgruen, LOW);
digitalWrite(ledrot, HIGH);
}
}

das sollte ja die rote LED zum leuchten bringen und sobald man den Taster drückt die gruene LED. Sofort wieder ausgehen wenn man den Taster loslässt. (Sorry wenn ich die Farben der LEDs vertaust habe)

  1. Problem Arduino in der Schule:

Wenn ich nichts mache sollte nur die rote an sein aber wen man ganz genau hinschaut sied man das die gruene ganz schwach leuchtet und sobald ich den Taster drücke die rote ausgeht und die gruene wieder normal leuchtet.

2.Problem Arduino zuhause:

Nachdem ich den Taster gedrückt habe und die gruene angeht lasse ich den Taster los aber die gruene bleibt immer noch an und wechselt erst wieder nach ein paar Sekunden (3-10sec) zur roten.Bzw. auch wenn ich den Taster nicht betätige wechselt die LED von an zu aus/aus zu an.

Sounds like buttonPin is floating. It pressing the button connects buttonpin to 5v, you need an external pulldown resistor (say 10k ohm) between buttonpin and Gnd, otherwise the pin will be "floating" when it isn't pressed, and will take random values as it picks up electromagnetic noise from the environment. If the button connected buttonpin to ground when pressed, you could use the internal pullup (set pinMode to INPUT_PULLUP); since buttonpin would now go LOW when pressed, you'd need to change that test as well.