Wpis z mikrobloga

#arduino #pytanie #pomocy #majsterkowanie #diy

Witam mam problem z kodem do aduino (jestem bardzo początkujący wiec nie odsyłajcie na elektrody pls)

Mam dwa przyciski na pinie 11 i 12
jeden dodaje jasności ledowi (albo potem podłącze tam tranzystor i bede sobie kontrolować inne rzeczy)

Jak napisać if a jeżeli chciałbym żeby po osiągnięciu 255 już nie rosło bo teraz "licznik" skacze co 50 i po dotarciu do 255 się resetuje a chciałbym żeby już świeciło na maxa

kod:

const byte LEDPIN = 6;
const byte UP
BUTTONPIN = 12; // Connect button between pin and Ground
const byte DOWN
BUTTONPIN = 11; // Connect button between pin and Ground
int brightup = 50;
byte brightness = 0;

void setup() {
pinMode(LED
PIN, OUTPUT);
pinMode(UPBUTTONPIN, INPUTPULLUP);
pinMode(DOWN
BUTTONPIN, INPUTPULLUP);
}

void loop() {
if (digitalRead(UPBUTTONPIN) == LOW && brightness < 255)
brightness = brightness + brightup;
if (digitalRead(DOWNBUTTONPIN) == LOW && brightness > 0)
brightness = brightness - brightup;
analogWrite(LED_PIN, brightness);
delay(20); // About 5 seconds from full off to full on
}
  • 7
@pszemczyslaw:

const byte LEDPIN = 6;
const byte UP
BUTTONPIN = 12;
const byte DOWN
BUTTONPIN = 11;
int brightup = 10;
byte brightness = 0;

void setup() {
pinMode(LED
PIN, OUTPUT);
pinMode(UPBUTTONPIN, INPUTPULLUP);
pinMode(DOWN
BUTTONPIN, INPUTPULLUP);
}

void loop() {
if (digitalRead(UPBUTTONPIN) == LOW )//&& brightness > 255)
brightness = brightness + brightup;

if (brightness>255)
brightness =255;

if (digitalRead(DOWNBUTTON
@pszemczyslaw:
const byte LEDPIN = 6;
const byte UP
BUTTONPIN = 12;
const byte DOWN
BUTTONPIN = 11;
int brightup = 10;
byte brightness = 0;

void setup() {
pinMode(LED
PIN, OUTPUT);
pinMode(UPBUTTONPIN, INPUTPULLUP);
pinMode(DOWN
BUTTONPIN, INPUTPULLUP);
}

void loop() {
if (digitalRead(UPBUTTONPIN) == LOW && brightness < 255)
brightness = brightness + brightup;
if (digitalRead(DOWNBUTTONPIN) == LOW &&
via Wykop Mobilny (Android)
  • 0
@pijmleko: po pierwsze:
Byte jest singned czyli ma zakres -127 do 127, używaj uint8t zamiast tego

Zamiast inta polecam użyć uint16
t

Ogólnie nie możesz dodawać 50 do byte bo jak przeskoczy Ci nad 127 to wroci na -127 a to zawsze bedzie mniejsze od 255

Lepiej użyj uint16_t w obu wypadkach
@pijmleko: wygląda to jakbyś miał źle ustawiony zegar w programie lub przestawione fusebity, albo odlutowany kwarc.

Jaką tę płytkę Arduino masz - jaki mikrokontroler i jakie taktowanie?