hulp voor absolute beginner

Dag allemaal,

Vandaag heb ik voor het eerst in mijn leven (57) een arduino (mega 2560 r3) aangesloten op mijn mac computer met een usbkabel en de eerste stap, namelijk het ledje laten knipperen, gemaakt. Mijn arduino zit gekoppeld aan een ramps 1.4 omdat ik bezig ben een 3Dprinter te bouwen en ik dit als een pakketje gekocht heb. Ledjes gingen mooi knipperen, zowel op de arduino als op de ramps, ik blij. Ik heb het programmaatje fade geprobeerd, werkte ook, en ben weer terug naar blink gegaan. Ik heb wat zitten spelen met de delaytijd. Allemaal prima, behalve dat ik een foutmelding kreeg avrdude: stk500v2_ReceiveMessage(): timeout. Maar de andere delaytijd die ik had ingesteld werkte wel. En toen...

Wilde ik het knipperen laten stoppen, de arduino weer leeg maken. Kan nergens vinden hoe dat moet! De ledjes (oranje op arduino en groen op ramps) gaan gewoon door. Sketch gestopt, bleef knipperen, cmdQ, cmdW geprobeerd, computer uitgezet, kabel eruitgehaald. Alles weer aangezet en de ledjes knipperen weer vrolijk. Overal in tutorials gekeken, iedereen vertelt hoe je het programmaatje Blink moet aanzetten, maar nergens wordt beschreven hoe het weer van de arduino afgehaald kan worden. Althans, ik kan het niet vinden. Kan iemand hier mij helpen?

Hoi en welkom.
Om die sketch er uit te krijgen, moet je er een andere inzetten.
Eentje die niets doet bijvoorbeeld.
Maar waarom moet ie leeg.
Je kunt ook gewoon je volgende sketch er inzetten als je die eenmaal aangemaakt hebt.
Ik zou m in ieder geval nooit proberen leeg te maken.
Want vermoedelijk is er een beperkt aantal malen dat je het ding kunt programmeren (al is dat dan een hoog aantal malen), dat zou ik niet willen verspelen door telkens nodeloos te wissen.

Je kunt ook in de sketch een start en stop commando opnemen dat je via serial verstuurt en de Arduino laat parsen.

Of simpeler maak een test op het high of low zijn van een pin en als die high is blokkeert loop.
De sketch werkt als pin 5 aan GROUND zit en stopt als je het met 5 V verbind. Andersom kan ook net wat je wil :wink:

void loop()
{
  while(digitalRead(5) == HIGH);

  rest vd code

}

Hoi en dank je wel voor je welkom en je snelle reactie.
Mijn gedachte is dat een lege arduino een beter begin is voor het programma van de 3dprinter, dat er straks in moet gaan komen. Ik heb nu een sketch gemaakt met void setup en void loop waarin niets staat en nu is het knipperen gestopt. Als ik de arduino IDE afsluit krijg ik een melding dat de arduino wordt afgesloten, maar dat gebeurd niet, hij/zij blijft aan. Is dat normaal? En is het zo dat je maar een bepaald aantal uploads hebt voor de arduino? Dank je wel voor de waarschuwing.

Blijft de foutmelding nog staan, ik las in de diverse fora dat dit een bekend probleem is waar nog geen oplossing voor is. Tot nu toe gaat het goed, dus wacht ik maar af wat er niet zal gaan werken.

Ook dank voor de andere mogelijkheid, met de simpelere uitleg begrijp ik een beetje wat je bedoelt. Omdat de ramps op mijn arduino zit kan ik niet goed zien welke pin waarmee is verbonden, ik zie alleen de (witte) onderkant en niet de (blauwe) bovenkant.

Is dat normaal? En is het zo dat je maar een bepaald aantal uploads hebt voor de arduino?

Ja, slechts 10.000 IIRC , en voor pakweg 6 euro heb je een nieuwe 328 chip dus dat is 0,06 cent per upload

The EEPROM -> 100,000 write/erase cycles

Was mij niet bewust van de "beperking". Maar voorlopig kan ik nog eventjes vooruit. Dank!

lesiur
Normaal kan je de ramp van de Arduino halen. Het zijn veel pinnen dus voorzichtig zijn en niet te veel wringen is de boodschap.

Als er een shield op je arduino zit kan je daar wel best rekening mee houden. Zo kan je BV een motor (of andere elektronica) aanzetten zonder dat je het wilt. Niet dat ik je schrik wil aanjagen maar een verwittigd man is er 2 waard.

Als beginner kan je de Arduino best zien als een doos met 3 delen.
Deel 1 bevat de bootloader. Er kan maar 1 bootloader in deel 1. De bootloader is een programma dat het makkelijk maakt om deel 2 te vullen.
Deel 2 bevat je sketch. Er kan maar 1 sketch in Deel 2.
Deel 3 is de EEPROM (kleine harde schijf). Daar kan je informatie opslaan die je na het uitschakelen van je Arduino nog ter beschikking wilt hebben.
Als beginner moet je je van de bootloader niets aantrekken. Die doet gewoon zijn werk net als veel andere delen van de Arduino.
Omdat er maar 1 sketch in deel 2 kan wordt je oude sketch verwijderd als je een nieuwe sketch oplaat.

Het geheugen van Arduino heeft inderdaad maar een beperkt aantal schrijfcycli. Daarom dat je je sketch nooit uit een Arduino haalt omdat dat een volledig overbodige schrijfcycli kost. Met een maximaal aantal cycli van 10.000 voor deel 1 en deel 2.
Als je dus 1 maal per dag een sketch schrijft heb je 10.000 /365 = 27 jaar te gaan. Als je er van uitgaat dat je tijdens de start van je project elk uur een sketch oplaat heb je 10.000 / (24 *365)= 1 jaar prototyping plezier (zonder slaap :astonished:).

Hou ons op de hoogte van je reprap ervaring

Met vriendelijke groet
Jantje

hoi vrienden

ik ben ook nieuw hier en wil dat ook leren programmeren met arduino
is er een boek waar je veel uitleg kan vinden ?
hoop dat ik hier veel kan leren
gr Mario

om de magie een beetje de nek om te draaien :slight_smile: De arduino kun je gewoon zien als een eenvoudige computertje met een aantal pinnen die je "Hoog" of "laag" kan maken of een een analoge waarde kunnen lezen. Interfaces zoals sensoren of relais kunnen bestuurd worden met de Hoog/laag of analoge waarde. Meer is het niet.
De kunst voor het programmeren als je het nog nooit hebt gedaan kun je door het bekijken van de voorbeelden die bij de IDE zijn toegevoegd en het bestuderen van tutorials. Velen lopen stuk door het overslaan van dit soort beginners voorbeelden. Maar programmeren is nu eenmaal een vak dat door veel te oefenen en doen zich tot een kunst kan verhevenen.
Je moet het dus in de vingers krijgen en snapppen hoe het werkt. De Arduino IDE is gewoon een C++ compiler met een IDE (integrated development environment) om alles eenvoudig te besturen (compileren en linken etc). Voor boeken kan ik je niet veel verder helpen. Het enige boek wat ik heb is van Kernigham & Richie over de C programming language uit de 80'er jaren. Mijn bijbel. Maar alles uit dat boek staat tegenwoordige gewoon op het web. De rest is ervaring en oefenen en discipline. Dat laatste laat helaas nog wel eens te wensen over. En dat is jammer omdat het leidt tot frustratie omdat iets niet werkt.
Mijn eigen ervaring (bijna 40 jaar) en stel regels:

  • Als het niet werkt ligt het aan jezelf
  • Als je niet gestructureerd en netjes programmeert (en ik kan een zeikerd wat dat betreft zijn) dan kaatst die bal 3x zo hard terug bij veranderingen
  • Soms kan je beter de bestaande code weg knikkeren en opnieuw beginnen
  • leer van je fouten (en nu nog maak ik er nog zat)
  • Programmeren is een kunst. Als je niet trots op je programma kan zijn is het waarschijnlijk bagger
  • oefenen, oefenen en nog eens oefenen
  • als je tijdens het testen geen fouten vind, dan heb je verkeerd getest
  • als je geen fouten vindt, moet je je zorgen maken en zit je te slapen
  • als je de fout niet vind, heb je last van "programmeurs blindheid". Opzij leggen en morgen opnieuw naar kijken.
  • Een werkend programma hoeft geen goed programma te zijn
  • Er is altijd een betere oplossing. En als je publiceert (op bijv. forums) reken op harde feedback. Gelukkig!! Anders ben je voor de kat zijn ... bezig geweest.
  • wees nooit tevreden. Het kan altijd beter.
  • Als je een voorbeeld van een ander ziet probeer te doorgronden waarom die ander de keuzes heeft gemaakt zoals ze zijn. Daar leer je van. Voor klakkeloos overnemen moet je naar de dierentuin gaan naar de apen oid. Daar vind je dan soortgenoten:)
  • je bent nooit uitgeleerd!!!

Goede punten, behalve een

  • Programmeren is een kunst

Programmeren is niet alleen kunst, maar vooral een kunde. Het is een vak waarbij je kennis uit het verleden toepast op nieuwe vraagstukken.

Onderdelen in het SW vak waarbij het kunst gehalte hoog is, zijn volgens mij

  • requirements bepalen (hoe weet je dat wat de klant zegt, dat is wat hij denkt te willen en wat hij uiteindelijk echt nodig heeft)
  • design (de vertaalslag van probleemstelling naar een ontwerp dat de beoogde resultaten kan geven)
  • optimalisate (maar ook hier is kennis vaak onderliggend)
  • algorithme ontwerp.

Met de laatste bedoel ik op de probleemgebieden waar nog geen (min of meer) standaard oplossingen voor bestaan. Een voorbeeld van algorithme ontwerp is het zoeken van een string in een lange tekst. Dit wordt bijvoorbeeld gebruikt om DNA sequenties te vinden in een genoom (tekst is 1e10 characters en de string die je zoekt 100 characters. Hoe doe je dat snel? NB Er zijn maar 4 characters { C T G A } Gewoon vooraan beginnen? achteraan? Hier wordt nog veel kunst bedreven :slight_smile:

Je kan, als je hem echt leeg wilt hebben, een sketch met alleen de basis zonder commando's uploaden:

void setup() {}
void loop() {}
1 Like