oke
en dan kan ik 2 - 4 gebruiken om mijn buttons te regelen.
oke
en dan kan ik 2 - 4 gebruiken om mijn buttons te regelen.
Welke LED?
Je hebt een groot breadboard gebruikt dus het zou moeten passen. En je hoeft de drukknoppen niet op het breadboard te zetten; je kunt ze net als het LCD scherm vrijelijk plaatsen.
Hetzelfde geldt ook voor de potmeter, zie mijn tekening in post 10.
oke
Kan dat in het echt dan ook ?
ik ben gewend om nog alles op de breadboard te plaatsen als ik met de arduino bezig ben.
Ik bedoel het lcd screen , sorry voor de verwarring.
Denk nog steeds dat de bedrading een mooie puinhoop wordt met de 3 buttons en de led ring.
Maar is de bedrading nu goed.
Dan is het tijd om te gaan zoeken naar een goede tutorial hoe het menu aan te pakken.
Dat wordt solderen. De volgende stap in je Arduino avonturen
De meeste breadboards staan niet echt bekend om hun betrouwbaarheid.
Alleen de draden aan de rechterkant van de drukknoppen overlappen elkaar (maar het is allemaal GND.
Let op dat je in de echte wereld een aparte voeding moet gebruiken voor de LED ring.
De kleuren geven de verschillende functies aan; groen is LCD data, blauw is drukknoppen, geel is NeoPixel ring data.
Dank je dat je me hebt laten zien.
Dit zou dus het eindresultaat zijn als ik alles aan de praat krijg.
Maar eerst het menu aan de praat.
Dan kijken hoe de led ring werkt.
Dan alle oude effecten overzetten.
En dan een nieuwe effect toevoegen
En dan ben ik eindelijk op het punt waar ik wil zijn.
Gaat me wel wat tijd kosten maar dat is oke.
Eerste stap van het menu
Tja, is het verspillen van tijd met dingen die je leuk vind wel echt tijd verspilling ?
Zag net één "foutje" in de wokwi van post 25; groen Vo gaat over rood Vdd; gecorrigeerd in the wokwi.
echt wel.
Begin dit al leuker te vinden als niet techisch opgeleid persoon En dat op mijn "oude" leeftijd.
en het volgende "probleem"
Waarom geeft buttonValue hier alleen maar 1023 ook als de button ingedrukt is.
Je hebt geen GND op je breadboard.
En waarom gebruik je analogRead()?
ik dacht dat het nodig was omdat het een analoge pin was.
en nu duikt een ander probleem op.
De display op de LCD is een mess.
Beide regels lijken nu op een regel geprint te worden.
Hopelijk kan ik dat vanavond oplossen
Alle IO pinnen (D0..D13, A0..A5) van de 328P zijn in eerste instantie digitale pinnen; dus op alle pinnen kun je digitalread() en digitalWrite() gebruiken.
En je kan gewoon doortellen na 13. Oftewel A0 = 14, A1 = 15 etc
Bij borden waar ook A6 & A7 beschikbaar zijn, (nano & pro-mini) geldt dat deze pinnen (A6 & A7) niet als digitale pinnen gebruikt kunnen worden en ook geen 'interne' pullup kunnen gebruiken.
Totdat je het wilt overzetten naar bv een Leonardo of Mega.
En die uitzondering was ik vergeten. Bedankt ![]()
Iemand een idee waarom ik alleen staart nu zie
int choice = 1;
LiquidCrystal LCD(12, 11, 10, 9, 8, 7); //Create Liquid Crystal Object called LCD
void showMenu() {
LCD.setCursor(5,0); //Set LCD cursor to upper left corner, column 0, row 0
LCD.print("Sweep");
LCD.setCursor(5,1);
LCD.print("Staart");
};
void setup() {
LCD.begin(0,0); //Tell Arduino to start your 16 column 2 row LCD
pinMode(buttonPin, INPUT_PULLUP);
Serial.begin(9600);
showMenu();
}
void loop() {
buttonState = analogRead(buttonPin);
Serial.println(buttonState);
}
Deze misschien? En LCD met 0 kolommen en 0 regels. Nog een geluk dat je "staart" ziet.
En commentaren die niet overeenkomen met de statements zijn waardeloos ![]()
klopt
Morgen maar even proberen uit te vinden waarom choice is updated voordat ik op de button druk.
#include <LiquidCrystal.h>
int buttonPin = A1;
int buttonState = HIGH;
int lastButtonState = HIGH ;
int choice = 1;
LiquidCrystal LCD(12, 11, 10, 9, 8, 7); //Create Liquid Crystal Object called LCD
void showMenu(int counter) {
LCD.setCursor(0, counter);
LCD.print("--->");
LCD.setCursor(5,0);
LCD.print("Sweep");
LCD.setCursor(5,1);
LCD.print("Staart");
};
void setup() {
LCD.begin(16,2); //Tell Arduino to start your 16 column 2 row LCD
pinMode(buttonPin, INPUT_PULLUP);
Serial.begin(9600);
showMenu(1);
}
void loop() {
buttonState = analogRead(buttonPin);
if (lastButtonState !=buttonState) {
lastButtonState = buttonState;
choice++;
Serial.println(choice);
showMenu(choice);
}
}
bijna werkend
#include <LiquidCrystal.h>
int buttonPin = A1;
int buttonState;
int lastButtonState = 1023 ;
int choice = 0;
LiquidCrystal LCD(12, 11, 10, 9, 8, 7); //Create Liquid Crystal Object called LCD
void showMenu(int counter) {
Serial.println(counter);
LCD.setCursor(0, counter);
LCD.print("--->");
LCD.setCursor(5,0);
LCD.print("Sweep");
LCD.setCursor(5,1);
LCD.print("Staart");
};
void setup() {
LCD.begin(16,2); //Tell Arduino to start your 16 column 2 row LCD
pinMode(buttonPin, INPUT_PULLUP);
Serial.begin(9600);
showMenu(choice);
}
void loop() {
buttonState = digitalRead(buttonPin);
if (buttonState != lastButtonState) {
lastButtonState = buttonState;
choice++;
showMenu(choice);
};
}
Alleen loopt de choice variable op wanneer ik de button indruk en als ik het loslaat.
Morgen even verder puzzelen.
Buttons zijn echt een PITA
ook dit idee werkt niet
void loop() {
buttonState = digitalRead(buttonPin);
if ((buttonState != lastButtonState) && buttonState != 1023) {
lastButtonState = buttonState;
choice++;
showMenu(choice);
};
Iemand een hint hoe dit goed af te handelen ?