OPGELOSTna upload werkt gewijzigde sketch 2*16 lcd alleen na onderbreken voeding

Herkent iemand dit?
Na een succesvolle upload gebeurt er niets (de oude tekste blijft gewoon staan) met het display.
Ook een restart met de button op de arduino geeft geen resultaat.
Als ik de voeding (USB kabel) los gooi en weer insteek start de arduino wel opnieuw op en komt de nieuwe tekst gewoon op t display.
Het maakt daarbij niet uit of ik ipv de USB kabel een andere voedingsbron gebruik. Alles functioneert dan gewoon.
Het is uitgeprobeerd met verschillende dus ligt niet aan de arduino terwijl een anders sketch wel gewoon "update" na een upload.

Het duurde heel wat uurtjes voor ik er erg in had dat het uploaden wel functioneerde maar pas geëffectueerd wordt na het loskoppelen van de arduino :confused:

#include <LiquidCrystal.h>

// LCD display waarbij:
// rs aansluiten op pin 12
// rw aansluiten op pin 11
// enable aansluiten op pin 10
// d4, d5, d6, d7 aansluiten op pins 5, 4, 3, 2
LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);

void setup()
{
  lcd.begin(16,2);
  lcd.clear();
  lcd.blink();
  lcd.print("Hallo ROC-A12!");  // Print een bericht op de LCD.
  lcd.setCursor(0,1); //eerste positie op 2e regel
  lcd.print("Elektrotechniek!");
}

void loop()
{  // Print een bericht op de LCD.
delay(2000);
  lcd.clear();
  lcd.print("Doet");
  lcd.setCursor(0,1); //eerste positie op 2e regel
  lcd.print("Of niet!");

}

Heb je geprobeerd de RESET pin aan GND te leggen voor een seconde of zo ?
Dat is wat de reset knop ook zou moeten doen, maar schijnbaar gebeurt er dan iets anders als bedoeld.
Er zijn controllers waar de RESET pin een andere functie kan worden toegewezen, ik weet niet of dat met jouw controller ook het geval is (want ik weet niet over welk board het gaat).

Sorry voor het niet vermelden van t boardje. Het gaat om een Uno.

Ik heb zojuist de resetpin aan grnd gelegd. Dan knippert led 13 wel maar de nieuwe sketch start niet.
pas na het verbreken van de voeding start de nieuwe sketch.
Het gebeurd overigens alleen bij (meerdere) sketches die het lcd display aanstuurt.
Dezelfde Uno met een andere sketch (bv blink without delay) update wel direct door het uploaden.
Ik heb 2 Uno boardjes geprobeerd, 2 lcd'tjes en 2 totaal verschillende (lcd) sketches maar alle combinaties doen t zelfde.

Ik snap absoluut niet wat hier de oorzaak van zou kunnen zijn of het zou iets in de library zijn

controleer je aansluitingen, en de library die erbij hoort, want als de voeding eraf gaat dan wordt de lcd ook gereset.
bijv wachttijden nakijken

Heb je alleen de tekst veranderd, of heb je de hele sketch opnieuw gedaan ?

Zet de 2 sketches naast elkaar op 1 scherm, en vergelijk ze als je de hele sketch opnieuw hebt gedaan.
Als je van de tweede, na een power cycle, terug gaat neer de eerste sketch, doet die het dan op dezelfde manier niet goed na een reset, of doet die dan wel meteen wat die moet doen ?

Ik heb de aansluitingen bij elke hardware wisseling dubbel gecheckt dus kan me niet voorstellen dat ik al die keren steeds dezelfde fout heb gemaakt. Ik gebruik de standaard liquidcristal library en heb geen flauw idee hoe ik die kan inzien, laat staan wijzigen.

Ik ondervind het probleem bij elke sketch waar ik gebruik maak van de lcd. Het probleem doet zich ook voor als ik alleen de tekstregel aanpas, vervolgens verifieer en daarna upload.

Ik heb inmiddels ook de hele arduino software opnieuw gedownload en geinstalleerd maar ook daarmee blijft het probleem bestaan.

Voor alle duidelijkheid:
De eerste keer na het aansluiten van een USB kabel doet de arduino precies wat ik ervan verwacht.
uploaden en gewoon uitvoeren. Wijzig ik dan de tekst, verify en upload ik, dan lijkt de lcd te bevriezen. Haal ik dan de voeding uit de arduino en sluit die weer aan, dan start deze correct op met de nieuwe tekst.

domme vraag, maar je hebt tekst staan in de setup en ook in de loop.
maak eens een simpele teller in de setup en in de loop een andere, gebruik ook eens wat serial.Print, om te zien waar je programma begint en zich bevindt.
als dat niet goed gaat, dan zet steeds een regel in comment tot het wel werkt.

het zijn allemaal data die over de lijntjes gaan, dus je moet het tijd geven, er is geen ready signaal van de LCD.

quote author=shooter link=msg=2429155 date=1444377284]
domme vraag, maar je hebt tekst staan in de setup en ook in de loop.
maak eens een simpele teller in de setup en in de loop een andere, gebruik ook eens wat serial.Print, om te zien waar je programma begint en zich bevindt.
als dat niet goed gaat, dan zet steeds een regel in comment tot het wel werkt.

[/quote]
Helemaal met je eens om op deze manier een progje te checken en ik zou graag willen maar het display reageert helemaal niet.
Misschien heb ik mijn probleem niet duidelijk beschreven dus hieronder stap voor stap wat ik doe en wat er gebeurt.

Ik schrijf (kopieer) een sketch.
Ik verify en upload de sketch; de arduino start het programma en laat de gewenste tekst(1) op het lcd zien.
Ik wijzig alleen de gewenste tekst(2) in de sketch, verify en upload; de ledjes op de arduino reageren. De display lijkt de tekst(1) uit de vorige sketch te bevriezen en laat niet de nieuwe tekst(2) zien.
Ik trek de voeding uit de arduino en sluit die opnieuw aan. De tekst die nu verschijnt is de nieuwe tekst(2) van de 2e upload. Dus de upload is blijkbaar wel goed gegaan.
Ik wijzig opnieuw alleen de tekst(3), verify en upload; de arduino start en laat tekst(3) zien.
ik wijzig nogmaals alleen de tekst(4) verify en upload; de ledjes op de arduino reageren. De display lijkt de tekst(3) uit de vorige sketch te bevriezen en laat niet tekst(4) zien.
Ik trek de voeding uit de arduino en sluit die opnieuw aan. De tekst die nu verschijnt is de nieuwe tekst(4) van de 2e upload na de eerste voeding onderbreking. Dus de upload blijkt ook nu weer goed gegaan.

Op de een of andere manier lijkt de lcd dus niet te reageren na een update van het programma.
Ik kan het wel omzeilen door na elke upload de voeding te onderbreken, maar het is niet zoals t hoort lijkt mij.

Update:
Als ik de massa van de lcd eruit haal en ik doe dan de uploads, dan reageert t scherm wel met even uit- en weer aangaan en functioneert alles prima.

Dan heb je mogelijk ergens een of andere lus.
Hoe voed je je scherm, en heb je alle massa´s aan elkaar zitten ?
Dus waar haal je de massa van de LCD uit ?

Laat eens een (duidelijke) foto zien van hoe je de spullen verbonden hebt.

Ik heb geprobeerd duidelijke foto's te maken maar dat lijkt niet te lukken.
Ik probeer het met mijn beschrijving (kan ik gelijk checken of het voor iemand anders ook duidelijk is :slight_smile:

Het circuit:

  • LCD Vdd en A pin aan 5V
  • LCD VSS,RW en K pin aan elkaar (oorspronkelijk ook aan Grnd)
  • LCD VO pin aan wiper 10K pot: ends aan Vdd en VSS
  • LCD RS pin aan digital pin 12
  • LCD Enable pin aan digital pin 10
  • LCD D4 pin aan digital pin 5
  • LCD D5 pin aan digital pin 4
  • LCD D6 pin aan digital pin 3
  • LCD D7 pin aan digital pin 2

Dat is niet voldoende, want niet je gehele schakeling.
En das wel waar ik op uit was, en wat er bij deze vragen altijd van je verwacht zal worden.

Dus wil ik nu weten waar je die 5V vandaan haalt.
En waar zitten VSS, RW en de Kathode van de LED(s) nu aan dan, als niet aan GND ?
Hangen die er maar gewoon bij te bengelen ?

Heb je alleen de Uno en dat display, of is de schakeling groter ?

Hoe voed je je schakeling (dus het geheel beschrijven) ?

Ow, en wat is er met Arduino pin 10 gebeurd ?
Je definieert meer dan je gebruikt volgens jouw schema, en das vragen om problemen.
Het zou me dus ook helemaal niets verbazen als daar je probleem ligt.
Want nu verschuift een functie die je wil gebruiken ineens buiten bereik en bedien je onbedoeld een functie die je helemaal niet wil gebruiken.
Lees dit.

dit is echt de hele schakeling.
5V van de arduino,
VSS, RW en K zijn aan elkaar geknoopt en daar hangt ook nog de grnd van de potmeter aan. Oorspronkelijke zat dit alles verbonden met grnd van de arduino maar dat is nu juist de verbinding die ik heb verwijderd.
Ik heb alleen de Uno en het display.
De voeding komt van de arduino
Pin 10 was abusievelijk als pin 11 genoteerd. dat heb ik inmiddels hersteld. sorry.
alle 5V zijn onderling verbonden en komen van de arduino 5V.

resume:
er zitten 7 draden in de arduino. te weten:
pin 2,3,4,5 verbonden aan resp. D4,D5,D6,D7
pin 10 en 12 verbonden aan resp E en RS
5V verbonden aan A,VDD en Potmeter

verder aan het lcd:
Er zit verbinding tussen A,VDD,Potmeter en 5V
Er zit verbinding tussen K,VSS,RW en Potmeter
Er zit een verbinding tussen wiper Potmeter en VO

That's all!

Pfff, vannacht erachter gekomen dat een defect breadbordje alle ellende heeft veroorzaakt.
Het was ook absoluut niet logisch dat er er zonder een of andere massa alles zou werken.

Ik kwam erachter door, voor foto's, exact dezelfde opstelling te willen maken zonder het origineel te slopen.
Hiervoor had ik uiteraard een ander boardje nodig en toen ik alles opgebouwd had...... werkte het niet.
Ten einde raad ging ik onderdelen uitwisselen waardoor ik erachter kwam waar het werkelijk aan lag.

Grrrrrr, zoveel ergernis, frustraties en tijdverspilling door een onderdeeltje van 3 euries...........

goedkoop = duurkoop
Dat moeten wel allemaal leren.
Volgende les:
duurkoop is niet hetzelfde als goed kwaliteit.

Met vriendelijke groet
Jantje

Frits,

Het was dus niet je gehele schakeling.
De gehele schakeling bestaat niet uit alleen maar componenten of modules.
Je hebt nu bemerkt dat de verbindingen er ook deel van uitmaken.
Dus niet alleen de draadjes, maar ook waar je die draadjes zoal in stopt.
Pas in de beschrijving van je oplossing heb je vermeld dat je een breadboardje hebt gebruikt.
Het is zaak dat je heel secuur werkt, en als je hulp nodig hebt kun je zulke dingen gewoon niet over slaan.
Ik neem aan dat je dat nu ook bemerkt hebt.

Verder heb je in je sketch echt pin 11 ook in gebruik; je vertelt de library dat pin 11 voor RW in gebruik is maar je hebt RW vast verbonden met GND.
Dat kost je een Arduino pin die je nu niet meer kunt gebruiken voor een ander doel.
Dat maakt voor de werking van deze sketch niet zoveel uit, maar netjes is dat niet.
En als het bedoeld is als voorbeeld voor leerlingen (ik neem aan dat dat de bedoeling was), dan is dit iets waar je nu op gewezen bent en wat je er uit kunt halen voor je je leerlingen een foutief voorbeeld stelt.

Ik ben geen leraar, integendeel; ik ben probeer zelf iets te leren :slight_smile:
Hierbij haal ik allerlei info van internet, bouw het na, wijzig parameter voor parameter en probeer er zo achter te komen hoe het werkt.
Ook deze opstelling heb ik van internet geplukt en letterlijk overgenomen vandaar dat er ROC a12 staat :slight_smile:

Sorry dat ik niet eerder had vermeld dat ik een breadboardje gebruik. Het enige excuus dat ik daarvoor heb is dat ik ervan uitging dat alle schakelingen altijd zo uitgeprobeerd worden.

Het bewuste boardje is overigens weer "gerepareerd"
Er bleek een, voor mij nauwelijks zichtbaar, draadje uit litze kabel achter gebleven.
Een goede les, volgende keer eerst vertinnen.....