Waarom werkt de lcd nog niet goed in wokwiki ?

oke

en dan kan ik 2 - 4 gebruiken om mijn buttons te regelen.

oke

Ik kom dan tot dit met jouw tekening als voorbeeld

hopelijk is het nu goed.

Vindt nu alleen de led een beetje donker maar het werkt wel

En als die goed is, eens een plaatsje vinden voor de drie buttons.

Denk niet dat die op het breadboard erbij passen.

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 :slight_smile: 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 :+1:

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 :wink:

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 ?