All electric components run on smoke. If you let the smoke out, they won't work anymore.
Tnx
Maar hoe en met welk materiaal hebben jullie dit geleerd ?
In de bibliotheek hebben ze niet zoveel om even door te kijken of die boeken zijn uit 1986
Wel dit boek maar die gebruikt een Mini-Mega-board (?) als hulpmiddel en ik heb dus een Uno :
Korte bespreking
Microcontrollers vinden breed toepassing in de wereld van de elektronica; professionals en hobbyisten in dit vakgebied kunnen zich met dit studieboek bekwamen in het programmeren van deze processoren. Na een algemene inleiding over de mogelijkheden van microcontrollers en software spitst de cursus zich vervolgens toe op het programmeren van AVR-processoren van Atmel in de 'C', waarbij het Mini-Mega-board als hulpmiddel wordt gebruikt. De lezer wordt goed geoefend door deze kennis toe te passen op vloeibaar-kristaldisplays, seriële data-overdracht, timers, counters en de seriële databus. Voorbeeldprojecten als een radioklok, global positioning system, pc-toetsenbord en afstandsbediening per gsm brengen de materie pas echt tot leven en stellen de cursist in staat om het geleerde daadwerkelijk in de praktijk te brengen. Een interessante aanvulling vanwege de brede toepasbaarheid in dit vakgebied. Met register. - Marc Busio
Ik heb al gevonden wat een mini-mega-board is maar dat worden dus extra kosten. Ik heb al uno en diverse componenten om wat uit te proberen.
http://www.elektor.nl/pro...d-(050176-72).91424.lynkx
edit: en ik vroeg me ook af of je C++ gewoon kan leren zonder allerlei externe componenten aan je computer te hangen ?
[ Voor 3% gewijzigd door kitao op 20-11-2013 19:01 ]
Hoe bedoel je je edit? Je kan gewoon voor je PC programmeren in C++. Zelf heb ik het geleerd door het te doen. Oké ik heb wel wat vakken gehad op de uni, maar niet bijzonder veel. Ooit met assembly begonnen bij AVRs, wat C geprogrammeerd daarna op wat andere platformen (dan is een beetje achtergrond kennis handig), tegenwoordig programmeer ik bij de mbed omgeving (http://www.mbed.org), volledige C++ ondersteuning, en gewoon makkelijk in gebruik. Dus ik gebruik mijn kennis, kijk hoe andere het doen, en google het als ik het nodig heb.
ik weet wel wat je bedoelt hoor met zelf proberen. In vorige posts werd gesproken over een C64. Die heb ik ook gehad, en ooit wat machinetaal in gezet en natuurlijk wat basic. Daarna een Z80 en via parallax wat Pbasic opgedaan met een Pic16F57.Sissors schreef op woensdag 20 november 2013 @ 19:08:
Een atmel in C programmeren zal waarschijnlijk een stuk lastiger zijn dan een Arduino, en veel meer gericht op directe toegang tot registers.
Hoe bedoel je je edit? Je kan gewoon voor je PC programmeren in C++. Zelf heb ik het geleerd door het te doen. Oké ik heb wel wat vakken gehad op de uni, maar niet bijzonder veel. Ooit met assembly begonnen bij AVRs, wat C geprogrammeerd daarna op wat andere platformen (dan is een beetje achtergrond kennis handig), tegenwoordig programmeer ik bij de mbed omgeving (http://www.mbed.org), volledige C++ ondersteuning, en gewoon makkelijk in gebruik. Dus ik gebruik mijn kennis, kijk hoe andere het doen, en google het als ik het nodig heb.
Wikipedia: PBASIC
Nu dus Uno programmeertaal.
Maar het is allemaal los bij elkaar vergaard (gegoogled) en daardoor versnipperd.
Ik zou gewoon een goed boek willen vinden dat er een goede systematische inleiding in geeft en dan liefst zonder dat het nodig is om allerlei schakelingen op te bouwen.
Jij schrijft : Je kan gewoon voor je PC programmeren in C++.
Kun je dat toelichten svp ?
C++ is gewoon een programmeertaal, de speciale dingen die voor je specifieke systeem gelden staan gewoon in libraries. Ik heb een programma in C++ geschreven dat ik zowel voor Windows (met dev-c++) als voor Arduino kan compileren, afhankelijk van de omgeving (#if defined ARDUINO) worden er andere libraries gelinked en stukje andere code gebruikt.
/me heeft eindelijk ook een icoontje.. woef.. boeien..
Jij heb dus werkelijk nog een C64 in huis die het nog doet ?WVL_KsZeN schreef op woensdag 20 november 2013 @ 19:31:
Je kunt voor zowat elke computer/processor/microcontroller programmeren in C++. Zelfs op mn c64 kan ik in C programmeren (maar dat doe ik niet, want dat is echt fokking langzaam en vreet geheugen).
C++ is gewoon een programmeertaal, de speciale dingen die voor je specifieke systeem gelden staan gewoon in libraries. Ik heb een programma in C++ geschreven dat ik zowel voor Windows (met dev-c++) als voor Arduino kan compileren, afhankelijk van de omgeving (#if defined ARDUINO) worden er andere libraries gelinked en stukje andere code gebruikt.
En bedankt voor je uitleg, ik kan je wel enigzins volgen.
Maar ik zou toch liever willen terugkeren naar de hoofdvraag : wie weet een goed boek of website over C-progammeren ?
Anders dwaalt dit teveel af vh arduino-topic vrees ik.
Cursussen zijn er zat maar dan dok je al gauw honderden euro's. (ben al eerder bij dirksen in studie geweest

http://www.dirksen.nl/opl...n-in-c-c-combinatiecursus
edit :
@AMA
(hoi, leuk je weer te zien
google zal best leuke boeken hebben. Maar die moet je dan wel eerst gaan kopen
vandaar mijn eerste vraag, wie kan een boek aanraden uit eigen ervaring
crisis weet je, en die gaat momenteel ook niet aan mij voorbij helaas

en echt veel aanleg heb ik er niet voor, mede daarom was ik laatst afgehaakt.
[ Voor 12% gewijzigd door kitao op 20-11-2013 20:26 . Reden: reply op volgende post ]
| Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72
@RobV Leuke link, die kende ik nog niet.
[ Voor 8% gewijzigd door ResuCigam op 20-11-2013 23:51 ]
We do what we must because we can.
Dat bedoel ik !
Tnx.
Vooral die ebooks zien er goed uit, ik heb er al eentje gratis gedownload.
Ik zal even voorbeeldje geven waar ik moeite mee heb om te begrijpen. In een vorige post had ik het over een looplicht : kitao in "[Discussie] Arduino-topic"
Stukje code daarvan uit chapter 1 :
1
2
3
4
5
6
7
8
9
| int del=100; // sets a default delay time, 1000 milliseconds (one second) void setup() { // initialize the digital pins as outputs: for (int i = 2; i<=9 ; i++) { pinMode(i, OUTPUT); } // end of for loop } // end of setup |
Dit kan ik wel lezen en met oefening ook schrijven. Ik snap nog niet waarom regel 1 buiten de setup wordt gezet zoals wel met pin 2 t/m 9 gebeurt.
Schrijf ik bijvoorbeeld onderstaande code (en dit heb ik ook net geprobeerd) dan krijg ik foutmelding :
'del' was not declared in this scope.
1
2
3
4
5
6
7
8
9
| void setup() { int del=100; // sets a default delay time, 1000 milliseconds (one second) // initialize the digital pins as outputs: for (int i = 2; i<=9 ; i++) { pinMode(i, OUTPUT); } // end of for loop } // end of setup |
Zal ongetwijfeld later in die boeken en tutorial verduidelijkt worden maar op dit moment ontgaat mij hiervan de logica.
Als ik naar de voorbeeldcode kijk op de website waar je naar linkt wordt de variable 'del' gebruikt in de methode 'loop'.Variable Scope
Another important choice that programmers face is where to declare variables. The specific place that variables are declared influences how various functions in a program will see the variable. This is called variable scope.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| int del=100; // sets a default delay time, 1000 milliseconds (one second) void setup() { // initialize the digital pins as outputs: for (int i = 2; i<=9 ; i++) { pinMode(i, OUTPUT); } // end of for loop } // end of setup void loop() { for (int i = 2; i<=9; i++) // blink from LEDs 2 to 9 { digitalWrite(i, HIGH); delay(del); digitalWrite(i, LOW); } for (int i = 8; i>=3; i--) // blink from LEDs 8 to 3 { digitalWrite(i, HIGH); delay(del); digitalWrite(i, LOW); } } |
'setup' en 'loop' zijn twee verschillende methodes. Als je de variable 'del' buiten de methodes declareert kunnen beiden methodes ze zien. Als je hem binnen de methode 'setup' declareert dan kan 'setup' hem wel zien maar 'loop' niet.
Of gebruik jij de variabele del ook in de gewone loop, want dat gaat niet werken. ?
Je kan de declaratie in de loop() doen dan werkt hij wel
Het verschil zit in de scope van de variabele. Als je hem declareerd in een routine dan is de variabele alleen binnen die routine beschikbaar.
Als je hen buiten alle routines declareerd is het een zogenaamde global variabele en dan is hij overal beschikbaar.
[ Voor 12% gewijzigd door SnowDude op 21-11-2013 10:55 ]
All electric components run on smoke. If you let the smoke out, they won't work anymore.
Ja, zie post van _Durandal_SnowDude schreef op donderdag 21 november 2013 @ 10:41:
Dat laatste werkt bij mij gewoon hoor?
Of gebruik jij de variabele del ook in de gewone loop?
Jullie noemen dat beiden een global variable of variable scope
ik kan hier verder naar zoeken, tnx.
dan is dit dus geen variable toch ? Die staat namelijk wel in de setup.'setup' en 'loop' zijn twee verschillende methodes. Als je de variable 'del' buiten de methodes declareert kunnen beiden methodes ze zien. Als je hem binnen de methode 'setup' declareert dan kan 'setup' hem wel zien maar 'loop' niet.
for (int i = 2; i<=9 ; i++)
edit : @_Durandal_ post hierna
Bedankt, heel goede uitleg.
[ Voor 4% gewijzigd door kitao op 21-11-2013 11:11 . Reden: reactie op volgende post ]
Binnen de initialisatie van de for loop, declareer je de variabele 'i'. Dit is dus wel een variabele, alleen de scope van 'i' is beperkt tot de for loop zelf.kitao schreef op donderdag 21 november 2013 @ 10:56:
[...]
Ja, zie post van _Durandal_
Jullie noemen dat beiden een global variable of variable scope
ik kan hier verder naar zoeken, tnx.
[...]
dan is dit dus geen variable toch ? Die staat namelijk wel in de setup.
for (int i = 2; i<=9 ; i++)
1
2
3
4
5
6
7
8
9
10
11
12
| int del=100; // sets a default delay time, 1000 milliseconds (one second) int i = 2; // Declareer variabele i void setup() { // initialize the digital pins as outputs: for (; i<=9; i++) // Maak gebruik van i, je hoeft hem niet opnieuw te declareren. { pinMode(i, OUTPUT); } // end of for loop } // end of setup |
Als je het zo schrijft is de scope weer veel groter en kunnen beiden methodes er gebruikt van maken. Omdat 'i' buiten de methodes gedeclareerd staat en dus iedereen er gebruik van kan maken noemen we het een 'globale variabele'. Wanneer 'i' binnen de methode gedeclareerd staat dan noemen we het een 'lokale variabele'.
spark heeft op spark.io hun firmware library beschikbaar gesteld.. wie is in staat hier naar te kijken en te kijken of dit geport kan worden naar reeds bestaande arduinos?
60 TB can not be enough
All electric components run on smoke. If you let the smoke out, they won't work anymore.
Kreeg ik melding : "Er is een nieuwe versie van Arduino beschikbaar, wilt u de arduino download pagina bezoeken ?"
Pagina bekeken maar niks gedownload.
Is dat een nieuwe versie software ?
Ik heb nu 1.0.1. geloof ik en daarvoor was er een andere. Als ik van die oudere versie programma's van ging loaden dan liepen die vaak niet goed met hier en daar een bug.
Kan ik dat nu weer verwachten als ik de nieuwste versie erin zet ?
De huidige officiële versie is 1.0.5 en daar zitten wel wat verbeteringen in.
Als je een mega hebt dan is het handig om de laatste bootloader te flashen want er zijn een paar bugs gefixt Ook zijn er een aantal bugs op gelost in de SPI init, en zijn er Wifi libiraries toegevoegd.
Van 1.0.1 naar 1.0.5 is geen major release upgrade en er zijn voornamelijk kleine bugs mee opgelost, meer libraries mee geleverd en er worden wat nieuwe boards ondersteund. Je zal voor zover ik kan niet niet tegen problemen aanlopen met de upgrade.
Zelf draai ik nu 1.5.4 en ik ben ook hierin nog niet tegen problemen aangelopen.
All electric components run on smoke. If you let the smoke out, they won't work anymore.
Is die een stuk hipper, of is het puur de HW-support voor Yun en Due?SnowDude schreef op vrijdag 22 november 2013 @ 23:00:
Zelf draai ik nu 1.5.4 en ik ben ook hierin nog niet tegen problemen aangelopen.
- zou je hem binnen loop definieren, dan wordt de variabele elke keer (dat loop draait) aangemaakt op de stack, geinitialiseerd en ook weer verwijderd. We hebben al zo weinig cpu cycles in een arduino, dus less is more.
- ook al wordt de variabele alleen in loop gebruikt, hij blijft altijd dezelfde waarde. Beter is dan om een constante te gebruiken (const) of beter nog #define, dan neemt ie geen RAM meer.
Kortom, globale definities/variabelen zijn voor embedded programming geen taboe.
| Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72
Verwijderd
Ik heb hier een oude Duemilanove liggen, maar dat is er eentje die het nodige te verduren heeft gehad en doet af en toe een beetje raar. Prima als ontwikkelbordje en backup, maar misschien is het tijd voor wat nieuws. Ik wilde sowieso ook een lading sensoren en aansturen bestellen, want alleen LEDjes blinken wordt ook rap saai.
Als ik een beetje rondkijk verschillen de prijzen tussen het officiële spul en het eBay/DealExtreme best wat. Wat ik mij vooral afvraag is in hoeverre de betrouwbaarheid, duurzaamheid en nauwkeurigheid van dergelijke imitatiebordjes verschillen met het officiële spul.
Ik neem aan dat de bordjes gewoon doen wat ze moeten doen, maar bij bijvoorbeeld sensoren kan ik me voorstellen dat de goedkope opties minder nauwkeurig zijn dan de duurdere opties. Wat zijn jullie ervaringen daarmee?
Bedankt voor de uitleg versie 1.0.1 en versie 1.0.5.
Tzt kan ik die dus gewoon uploaden.
@RobV
Bedankt voor de toelichting globale 'int del'.
Ik ben zelf nog niet tegen geheugengebrek arduino aangelopen maar ik kan me voorstellen dat dit wel een rol gaat spelen.
Ik heb trouwens dit boek gekozen uit jouw link en ben die aan het doornemen :

Goede uitleg
@Camacha,
Ik heb geen uc's bij e-bay gekocht maar wel wat ander spul zoals een plakkaat breadboards naast elkaar. Bij openmaken pakje viel er al een voedingsconnector vanaf. Kan gebeurd zijn tijdens verscheping. Maar toen ik het board ging doorfluiten was er nog iets mis. Na losschroeven bleek er onder het board een hele geleidingsstrip te ontbreken. Dat kan natuurlijk nooit tijdens transport zijn gebeurd. Dat is gewoon een fabricagefout. Voor de rest kan ik het gewoon gebruiken, maar stel, ik zou hem terug willen sturen. Dan heb je volgens mij een hoop gedoe daaraan richting China.
Wat ik wil zeggen eigenlijk, je zal een beetje geluk moeten hebben maar je hoeft er volgens mij ook niet vreemd van op te kijken als het minder stevig is als het spul bij een goede dealer.
eigenlijk wil ik simpelweg mijn arduino's aansluiten op de spark cloud.. heb zelf een 10 stuks spark arduino's onderweg, maar die spark cloud, een centrale arduino server , klinkt wel heel erg tof... dat maakt heel mijn huis automatisering wel super makkelijk..SnowDude schreef op vrijdag 22 november 2013 @ 16:31:
wat wil je poorten? afaik zijn de meeste functies van de spark software afhankelijk van de hardware
60 TB can not be enough
Ik vind overal wel wat je per poort maximaal mag trekken, maar ik vind nergens info wat de nano verbruikt als je puur alleen de nano aan het netstroom hangt.
http://www.arduino.cc/en/Main/ArduinoBoardNano
Speed | VCC | typ | max |
Active 1 MHz | 2V | 0.3 | 0.5 mA |
Active 4 MHz | 3V | 1.7 | 2.5 mA |
Active 8 MHz | 5V | 5.2 | 9 mA |
Idle 1 MHz | 2V | 0.04 | 0.15 mA |
Idle 4 MHz | 3V | 0.3 | 0.7 mA |
Idle 8 MHz | 5V | 1.2 | 2.7 mA |
De USB chip gebruikt ook 15mA tijdens gebruik en 70 uA in idle
All electric components run on smoke. If you let the smoke out, they won't work anymore.
Als de API voor de Spark Cloud beschikbaar is, dan lijkt me dit zondermeer mogelijk: het is dan niks anders dan de juiste (REST ??) berichtjes sturen...freak1 schreef op zaterdag 23 november 2013 @ 11:11:
[...]
eigenlijk wil ik simpelweg mijn arduino's aansluiten op de spark cloud.. heb zelf een 10 stuks spark arduino's onderweg, maar die spark cloud, een centrale arduino server , klinkt wel heel erg tof... dat maakt heel mijn huis automatisering wel super makkelijk..
Verder hebben ze ook belooft om op je eigen server de Spark Cloud te draaien zodat je alles zelf in de hand hebt: "If you want the simplicity of the Cloud but you want it on your own server, we'll be releasing an open source version of the Cloud designed for quick and easy deployment."
Als laatste is de programmeeromgeving Arduino compatible, dus zonder ook maar iets gezien te hebben zou je dan kunnen verwachten dat de Spark Cloud API/Library dus ook is over te zetten.
Het enige probleem dat je mogelijk mag verwachten is tekort aan RAM/ROM voor de gewone Atmega's en dat je minimaal een 644P/1284P/2560 moet hebben...
[ Voor 28% gewijzigd door Mars Warrior op 25-11-2013 15:57 ]
Material 3 Thema's voor HA | Swiss Army Knife custom card voor HA | AmoebeLabs
Verwijderd
Zijn er andere mensen met ervaringen met bordjes en sensoren van Deal Extreme en dergelijke websites?Verwijderd schreef op zaterdag 23 november 2013 @ 10:15:Als ik een beetje rondkijk verschillen de prijzen tussen het officiële spul en het eBay/DealExtreme best wat. Wat ik mij vooral afvraag is in hoeverre de betrouwbaarheid, duurzaamheid en nauwkeurigheid van dergelijke imitatiebordjes verschillen met het officiële spul.
Ik neem aan dat de bordjes gewoon doen wat ze moeten doen, maar bij bijvoorbeeld sensoren kan ik me voorstellen dat de goedkope opties minder nauwkeurig zijn dan de duurdere opties. Wat zijn jullie ervaringen daarmee?
Heb weleens een partij ultrabillige witte LED's gekocht op Ebay, maar die bleken ook een zeer korte levensduur te hebben. Heb die nu vervangen door ietsje minder billige (diffuse) LED's en die lijken het tot nu toe beter vol te houden. Volgens mij kun je ditsoort dingen het best een beetje gokken, want als je iets uit een europese shop bestelt is het al gauw 10 keer zo duur, en is het maar de vraag of hun het ook niet gewoon op ebay bij de eerste de beste chinees ingekocht hebben.
als het gaat om gevoelige sensoren e.d. heb ik geen ervaring. Heb wel een paar DS18B20's in mijn elektrodoos maar dat waren free samples van de fabrikant, dus geen namaak.
De programmeer omgeving is C++ compatible, met ondersteuning voor wat specifieke arduino commando's. De processor is van de Sparks is een ARM en geen AtmegaMars Warrior schreef op maandag 25 november 2013 @ 15:53:
[...]
Als de API voor de Spark Cloud beschikbaar is, dan lijkt me dit zondermeer mogelijk: het is dan niks anders dan de juiste (REST ??) berichtjes sturen...
Verder hebben ze ook belooft om op je eigen server de Spark Cloud te draaien zodat je alles zelf in de hand hebt: "If you want the simplicity of the Cloud but you want it on your own server, we'll be releasing an open source version of the Cloud designed for quick and easy deployment."
Als laatste is de programmeeromgeving Arduino compatible, dus zonder ook maar iets gezien te hebben zou je dan kunnen verwachten dat de Spark Cloud API/Library dus ook is over te zetten.
Het enige probleem dat je mogelijk mag verwachten is tekort aan RAM/ROM voor de gewone Atmega's en dat je minimaal een 644P/1284P/2560 moet hebben...
Je vergeet ook even dat er een wifi interface op moet, en om de arduino te programmeren vanuit de sparc cloud moet er ook nog een stuk spi memory op.
Het zal een stuk makkelijker en goedkoper zijn om direct met Spark Cores te beginnen
Ik gebruik al tijden de nano's van DX. Het enige nadeel is dat deze standaard geen bootloader hebben. Die moet je dus eerst er op zetten. Dit is makkelijk te doen, met een bestaande arduino, je kan daar de porgrammer sketch in laden en dan via deze de nieuwe bootloader schrijven.Verwijderd schreef op maandag 25 november 2013 @ 16:00:
[...]
Zijn er andere mensen met ervaringen met bordjes en sensoren van Deal Extreme en dergelijke websites?
All electric components run on smoke. If you let the smoke out, they won't work anymore.
Dat komt mooi uit, ik wou net iets vragen over bootloaders.SnowDude schreef op maandag 25 november 2013 @ 16:24:
Ik gebruik al tijden de nano's van DX. Het enige nadeel is dat deze standaard geen bootloader hebben. Die moet je dus eerst er op zetten. Dit is makkelijk te doen, met een bestaande arduino, je kan daar de porgrammer sketch in laden en dan via deze de nieuwe bootloader schrijven.
Ik heb dus een stand-alone atm328 met kristal, 2 condensators en een switch met weerstand.
Nu dacht ik slim te zijn vandaag en ik haalde uit de uno de chip en zette er de standalone erin.
Sketch Blink opgeladen, kreeg ik deze melding :
avrdude: stk500_getsync(): not in sync: resp=0x00
Als die chips hetzelfde zijn dan zou je ze toch gewoon moeten kunnen uitwisselen en allebei op dezelfde manier moeten kunnen programmeren ?
Je moet dit even lezen:
http://arduino.cc/en/Tutorial/ArduinoToBreadboard
All electric components run on smoke. If you let the smoke out, they won't work anymore.
TnxSnowDude schreef op maandag 25 november 2013 @ 16:52:
Jij hebt duidelijk nog geen bootloader op de stand alone staan.
Je moet dit even lezen:
http://arduino.cc/en/Tutorial/ArduinoToBreadboard
Als ik me goed herinner heb ik op die manier mijn standalone (SA) al eerder geprogrammeerd. Er staat hoe dan ook al een programma in omdat ik die SA gebruik voor een klokje.
Ik had verwacht dat na 1x bootloaden de SA gewoon uitwisselbaar zou worden.
naja ik heb dus een berg mega's met ethernet aansluiting inclusief PoE.. die wil ik graag aansluiten op de spark cloud..SnowDude schreef op maandag 25 november 2013 @ 16:24:
[...]
De programmeer omgeving is C++ compatible, met ondersteuning voor wat specifieke arduino commando's. De processor is van de Sparks is een ARM en geen Atmega
Je vergeet ook even dat er een wifi interface op moet, en om de arduino te programmeren vanuit de sparc cloud moet er ook nog een stuk spi memory op.
Het zal een stuk makkelijker en goedkoper zijn om direct met Spark Cores te beginnen
heb je interesse daaraan mee te werken?
60 TB can not be enough
Vraagje: Ik kom bij jouw link het volgende tegen:SnowDude schreef op maandag 25 november 2013 @ 16:52:
Jij hebt duidelijk nog geen bootloader op de stand alone staan.
Je moet dit even lezen:
http://arduino.cc/en/Tutorial/ArduinoToBreadboard
Note that these techniques only work with the Arduino Duemilanove w/ an ATmega328, not the Arduino Uno (or older Arduino boards w/ an ATmega168).
Waarom zou dit niet werken met een Uno?
We do what we must because we can.
Je moet wel de goeie bootloader voor de goeie arduino erop hebben staan. Als je bijv. de bootloader van de Duemilanove erop hebt staan gaat hij niet werken op een Uno-bord. Ook moet het kristal natuurlijk overeenkomen.kitao schreef op maandag 25 november 2013 @ 17:01:
[...]
Tnx
Als ik me goed herinner heb ik op die manier mijn standalone (SA) al eerder geprogrammeerd. Er staat hoe dan ook al een programma in omdat ik die SA gebruik voor een klokje.
Ik had verwacht dat na 1x bootloaden de SA gewoon uitwisselbaar zou worden.
Verwijderd
[ Voor 19% gewijzigd door Verwijderd op 25-11-2013 17:11 ]
Je hebt nooit een bootloader nodig als je een ICSP gebruikt. Dan kun je je code compileren naar native Atmega-code en direct uploaden, zonder tussenkomst van enige arduino software.Verwijderd schreef op maandag 25 november 2013 @ 17:07:
Begrijp ik het goed dat wanneer je een Arduino zou hebben die je maar één keer wilt flashen (denk aan een embeded bordje o.i.d.) je geen bootloader nodig hebt? Als je regelmatig van programma wilt wisselen is het wat meer gedoe en dus wel handig, omdat je anders steeds met een andere Arduino aan de slag moet. Zoiets?
Hoe werkt dat fysiek, met de ene Arduino de andere flashen?
Als je de ene arduino gebruikt om de andere te programmeren, dan moet je eerst op die eerste arduino een softwarematige ICSP laden (die zit standaard als voorbeeldscript bij de Arduino IDE). Je gebruikt dan dus gewoon de eerste arduino als ICSP.
-edit-
http://arduino.cc/en/Hacking/Bootloader hier meer info over de arduino bootloader.
Overigens is er niet echt een reden om zonder de bootloader te willen werken of de bootloader te verwijderen. Dat heeft alleen nut als je echt die laatste KB's geheugen nodig hebt, of gefrusteerd raakt van de 3 seconden opstarttijd.
[ Voor 17% gewijzigd door mcDavid op 25-11-2013 17:18 ]
Verwijderd
Heb je het nu over de Arduino via USB programmeren of juist over via de ene Arduino een andere Arduino programmeren?mcDavid schreef op maandag 25 november 2013 @ 17:12:
Je hebt nooit een bootloader nodig als je een ICSP gebruikt. Dan kun je je code compileren naar native Atmega-code en direct uploaden, zonder tussenkomst van enige arduino software.
Het wordt me er niet duidelijker op wanneer je nu een bootloader nodig hebt en wanneer niet (en wat dat ding dus doet)
All electric components run on smoke. If you let the smoke out, they won't work anymore.
Tot nu toe heb ik alleen maar 1 uno en 1 SA dus hoe zou er iets anders op kunnen staan ?
Maar goed, ik ben gisteren flink met soldeerbout en verkeerde aansluitingen tekeer gegaan dus wie weet is er wat geknapt. Ik ben nog aan het testen.
@Camacha,
Ik heb een linkje voor je.
kitao in "[Discussie] Arduino-topic"
Je kunt ook verder zoeken op bootloaden Arduino, bare bone arduino, stand-alone arduino, break-outboard etc.
Komt er op neer dat er verschillende methodes zijn. Ik heb de goedkooste genomen zonder usb of breakout.
Verwijderd
Ja, dan snap ik het toch en is het volgens mij wat ik hierboven zeg; wil je gemakkelijk kunnen herprogrammeren via USB heb je een bootloader nodig, wil je bijvoorbeeld maar één keer programmeren omdat je hem voor een embedded toepassing gebruikt kan je dat Arduino naar Arduino doen en heb je geen bootloader nodig.SnowDude schreef op maandag 25 november 2013 @ 17:17:
De belangrijkste functie van de bootloader is dat je de Arduino kan programmeren via de serial (USB) interface
Dit gaat allebei even uit van 'gewone' bordjes die al in elkaar zitten.
gewoon de SA via spi aansluiten aan de uno, zoals in die link die ik eerde postte.
Dan de programmer sketch in de UNO zetten, en daarna onder Tools de juiste programmer kiezen.
Dan heb je twee mogelijkheden:
1: Je zet de bootloader op de SA
2: Je opent een sketch en die schrijf je direct naar de SA
All electric components run on smoke. If you let the smoke out, they won't work anymore.
Over het programmeren in zijn algemeen.Verwijderd schreef op maandag 25 november 2013 @ 17:16:
[...]
Heb je het nu over de Arduino via USB programmeren of juist over via de ene Arduino een andere Arduino programmeren?
Het wordt me er niet duidelijker op wanneer je nu een bootloader nodig hebt en wanneer niet (en wat dat ding dus doet)
Het hart van de Arduino is de Atmega328, dat had je waarschijnlijk al begrepen. Die chip is natuurlijk gewoon te programmeren, ook als je hem voor iets niet-arduino gerelateerds gebruikt. Je hebt dan alleen een extern stukje hardware (een "in-cicuit serial programmer", ICSP) nodig om de code erop te krijgen.
Als je een Arduino koopt, heeft iemand anders al (met zo'n ICSP) de arduino-bootloader op de chip gezet. De arduino-bootloader is een programmatje dat de Atmega in staat stelt zichzelf te programmeren, zonder tussenkomst van een ICSP. Dat maakt het wel lekker makkelijk voor het hobby-gebruik waar de Arduino voor bedoeld is.
Een ICSP heb je in verschillende vormen. Je kunt ze zo kant-en-klaar kopen, maar je kunt ook een arduino programmeren als ICSP, en dat is dus wat je doet als je "de ene arduino met de andere programmeert".
Aha,SnowDude schreef op maandag 25 november 2013 @ 17:25:
Dan heb je twee mogelijkheden:
1: Je zet de bootloader op de SA
2: Je opent een sketch en die schrijf je direct naar de SA
Ik zou die SA dus geprogrammeerd kunnen hebben en dat er desondanks toch nog geen bootloader op staat ?
Dat verklaart het dan.
Verwijderd
Dat maakt het samen met het bericht van SnowDude een stuk duidelijk
[ Voor 68% gewijzigd door Verwijderd op 25-11-2013 17:37 ]
Dat kan en dat is ook het meest waarschijnlijke ja.kitao schreef op maandag 25 november 2013 @ 17:29:
[...]
Aha,
Ik zou die SA dus geprogrammeerd kunnen hebben en dat er desondanks toch nog geen bootloader op staat ?
Dat verklaart het dan.
Als je een standalone chip hebt, heeft het niet zoveel zin om daar een Arduino Bootloader op te zetten, aangezien die bootloader alleen werkt in samenwerking met de USB/Serial converter op de Arduino. Een Arduino bootloader op een ATMega chip zetten heeft dus alleen zin als je van plan bent die ATMega daarna ook fysiek op een Arduino te zetten.
Ik heb een SA op een voetje op een zelfgemaakt printje staan. Daar is iets mis mee, dus ik wou de SA opnieuw programma in zetten. Aangezien ik geen extra cond. en kristal in huis heb en de oorspronkelijke al vast gesoldeerd zijn wou ik eigenlijk mijn uno-chip verwijderen, de SA erop zetten en die dan gewoon met de IDE opnieuw programmeren.
Dat gaat dus niet want er blijkt geen bootloader op te zitten.
Kortom, ik moet even geduld hebben totdat ik wat onderdelen in huis heb.
Maar bedankt voor de uitleg, en Snow natuurlijk ook.
Of misschien heb je nog een 3e Arduino (in welke verschijningsvorm dan ook)? Die je als ICSP zou kunnen gebruiken?
yep, dat is ook een idee. Morgen wat extra aansluitingen solderen.mcDavid schreef op maandag 25 november 2013 @ 18:27:
Misschien kun je 'm programmeren terwijl hij op de print zit?
- continu een analoge poort in de gaten te houden en het signaal (bittrain) op te nemen (van de domotica)
- de I2C bus in de gaten te houden als slave
- op vraag van de I2C bus bittrains op de analoge bus te zetten
dit in combinatie met de zaken van openenergymonitor: http://openenergymonitor.org/
- continu 4 analoge poorten uitlezen en berekeningen hierop uitvoeren om verbruik te berekenen
Kan 1 arduino nano dit aan? of splits ik het beter op met een dedicated per onderdeel
Een Nano is iig niet minder krachtig dan een fullsize Arduino ofzo.
[ Voor 94% gewijzigd door RobV op 25-11-2013 19:27 ]
| Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72
zie de link die ik eerder poste, kopje "Minimal Circuit (Eliminating the External Clock)"kitao schreef op maandag 25 november 2013 @ 18:17:
Het zit zo mcDavid,
Ik heb een SA op een voetje op een zelfgemaakt printje staan. Daar is iets mis mee, dus ik wou de SA opnieuw programma in zetten. Aangezien ik geen extra cond. en kristal in huis heb en de oorspronkelijke al vast gesoldeerd zijn wou ik eigenlijk mijn uno-chip verwijderen, de SA erop zetten en die dan gewoon met de IDE opnieuw programmeren.
Dat gaat dus niet want er blijkt geen bootloader op te zitten.
Kortom, ik moet even geduld hebben totdat ik wat onderdelen in huis heb.
Maar bedankt voor de uitleg, en Snow natuurlijk ook.

Waarom lees je de bittrain uit met de analoge bus? Dat kan makkelijker met een digitale poort, en eventueel met een interrupt.Promy schreef op maandag 25 november 2013 @ 19:13:
Kan er me iemand zeggen of een arduino nano (atmega328 @16MHz) voldoende krachtig is om
- continu een analoge poort in de gaten te houden en het signaal (bittrain) op te nemen (van de domotica)
- de I2C bus in de gaten te houden als slave
- op vraag van de I2C bus bittrains op de analoge bus te zetten
dit in combinatie met de zaken van openenergymonitor: http://openenergymonitor.org/
- continu 4 analoge poorten uitlezen en berekeningen hierop uitvoeren om verbruik te berekenen
Kan 1 arduino nano dit aan? of splits ik het beter op met een dedicated per onderdeel
Verder zou ik niet zien waarom dit niet zou kunnen, 16MHz is niet bepaald weinig he, mijn eerste PC was maar 4MHz
Ik neem aan dat alle gevens via de i2c bus wil versturen?
All electric components run on smoke. If you let the smoke out, they won't work anymore.
foutje: ik bedoelde natuurlijk een digitale poort voor de bittrainSnowDude schreef op maandag 25 november 2013 @ 19:40:
[...]
zie de link die ik eerder poste, kopje "Minimal Circuit (Eliminating the External Clock)"
[afbeelding]
[...]
Waarom lees je de bittrain uit met de analoge bus? Dat kan makkelijker met een digitale poort, en eventueel met een interrupt.
Verder zou ik niet zien waarom dit niet zou kunnen, 16MHz is niet bepaald weinig he, mijn eerste PC was maar 4MHzDe beperkende factor is eerder het beschikbare geheugen. Maar zolang je geen TCP ip stacks gaat laden en geen grafisch display aanstuurt dan is het echt ruim voldoende.
Ik neem aan dat alle gevens via de i2c bus wil versturen?

Ik wil inderdaad van alles de laatste waarde bewaren en versturen via de I2C bus en geen verder grafische zaken of tcp/IP
Ga ik dus ff proberen als de laatste onderdelen (9V ac/ac adapter voor de voltagemeting) binnen zijn
Ben net 2 uur bezig geweest maar het werkt dus niet. (bij mij dan)ResuCigam schreef op maandag 25 november 2013 @ 17:05:
[...]
Vraagje: Ik kom bij jouw link het volgende tegen:
Note that these techniques only work with the Arduino Duemilanove w/ an ATmega328, not the Arduino Uno (or older Arduino boards w/ an ATmega168).
Waarom zou dit niet werken met een Uno?
Eerste uur was ik al kwijt om in het menu Extra=> Board het veldje "ATmega328 on a breadboard (8 MHz internal clock" tevoorschijn te toveren en hoe dat gelukt is kan ik niet meer navertellen.
Maar goed, die staat er dus in, alles opgebouwd volgens tekening, maar helaas, nada resultaat.
(ps, ik heb trouwens een uno met atm328, versie 1.0.1)
Volgende stap gaat dan worden om het met kristal te proberen maar dan moet ik even mijn print aanpassen.
edit: print aangepast
werkt nu maar dat is niet gekomen door de arduino-site te volgen.
Ik heb deze site gevolgd : http://blog.biophysengr.n...es-to-atmega386p-pre.html
zie voor meer bijzonderheden : kitao in "[Discussie] Arduino-topic"
waar precies het verschil in zit weet ik niet maar wie dat wil en kan uitleggen is welkom.
[ Voor 20% gewijzigd door kitao op 26-11-2013 08:01 . Reden: toevoeging ]
Ik welkitao schreef op dinsdag 26 november 2013 @ 06:29:
[...]
Ben net 2 uur bezig geweest maar het werkt dus niet. (bij mij dan)
Eerste uur was ik al kwijt om in het menu Extra=> Board het veldje "ATmega328 on a breadboard (8 MHz internal clock" tevoorschijn te toveren en hoe dat gelukt is kan ik niet meer navertellen.
Maar goed, die staat er dus in, alles opgebouwd volgens tekening, maar helaas, nada resultaat.![]()
(ps, ik heb trouwens een uno met atm328, versie 1.0.1)
Je moet je boards.txt openen en dan deze data er onder plakken: http://arduino.cc/en/uploads/Tutorial/Breadboard.zip
En dan de software even opnieuw starten.
Ik ook niet want voor zover ik zie heb je gewoon het zelfde schema gebruikt als bij "Burning the Bootloader" op de Arduino site.Volgende stap gaat dan worden om het met kristal te proberen maar dan moet ik even mijn print aanpassen.
edit: print aangepast
werkt nu maar dat is niet gekomen door de arduino-site te volgen.
Ik heb deze site gevolgd : http://blog.biophysengr.n...es-to-atmega386p-pre.html
zie voor meer bijzonderheden : kitao in "[Discussie] Arduino-topic"
waar precies het verschil in zit weet ik niet maar wie dat wil en kan uitleggen is welkom.
All electric components run on smoke. If you let the smoke out, they won't work anymore.
Ik heb het gevonden. Ik wou net m'n post editten toen ik jouw reactie zag.SnowDude schreef op dinsdag 26 november 2013 @ 08:59:
Ik ook niet want voor zover ik zie heb je gewoon het zelfde schema gebruikt als bij "Burning the Bootloader" op de Arduino site.
Wat ik fout deed was om niet eerst uit het menu 'Bestand => Voorbeelden => ArduinoISP" op te laden.
Bij de Arduino-site uitleg is me dit ontgaan (op dat moment zei me dat ook niks) en op die andere site werd het met plaatjes uitgelegd.
Zonet geprobeerd de StandAlone (SA) te bootloaden volgens de Arduino-site instructies en met de externe kristalconfiguratie en nu lukte het wel.
Ook lukt het nu om de 'boardchip' rechtstreeks te vervangen met de SA-chip en die op die manier te programmeren. (bijv. met blink)
Tja, kwestie van goed lezen maar uitleg had wel iets uitgebreider mogen zijn.
Bedankt voor je hulp SnowDude.
Over dat stukje zip-file kom ik mss later op terug.
Welke bugs zijn er gefixt?SnowDude schreef op vrijdag 22 november 2013 @ 23:00:
De huidige officiële versie is 1.0.5 en daar zitten wel wat verbeteringen in.
Als je een mega hebt dan is het handig om de laatste bootloader te flashen want er zijn een paar bugs gefixt Ook zijn er een aantal bugs op gelost in de SPI init, en zijn er Wifi libiraries toegevoegd.
Ik gebruik een mega in combinate met een ethernetshield. Ik heb wat problemen met het lezen van een SD card. Hebben deze bugs hier mee te maken?
Hoe kan ik een bootloader flashen?
Wat voor problemen heb je eigenlijk?
All electric components run on smoke. If you let the smoke out, they won't work anymore.
Is dat niet net in de voorgaande posts naar voren gekomen ?
Tenzij je iets anders bedoelt natuurlijk
Ik heb dit opgebouwd, een standalone atm328 op uno-bordje gezet, een rtc en een display met ingebouwde max7221.
Dit moet dus op print komen.

klik om te vergroten
Nu heb ik daar een programma voor :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
| // Simple clock using DS1307 RTC chip, Arduino and // MAX7219 LED display driver // more information at http://wp.me/pQmjR-BK #include "Wire.h" #define DS1307_I2C_ADDRESS 0x68 #include "LedControl.h" // need the library byte second, minute, hour, dayOfWeek, dayOfMonth, month, year; float t=0; int a,b; LedControl lc=LedControl(12,11,10,1); // lc is our object // pin 12 is connected to the MAX7219 pin 1 // pin 11 is connected to the CLK pin 13 // pin 10 is connected to LOAD pin 12 // 1 as we are only using 1 MAX7219 // Convert normal decimal numbers to binary coded decimal byte decToBcd(byte val) { return ( (val/10*16) + (val%10) ); } // Convert binary coded decimal to normal decimal numbers byte bcdToDec(byte val) { return ( (val/16*10) + (val%16) ); } // 1) Sets the date and time on the ds1307 // 2) Starts the clock // 3) Sets hour mode to 24 hour clock // Assumes you're passing in valid numbers void setDateDs1307(byte second, // 0-59 byte minute, // 0-59 byte hour, // 1-23 byte dayOfWeek, // 1-7 byte dayOfMonth, // 1-28/29/30/31 byte month, // 1-12 byte year) // 0-99 { Wire.beginTransmission(DS1307_I2C_ADDRESS); Wire.write(0); Wire.write(decToBcd(second)); // 0 to bit 7 starts the clock Wire.write(decToBcd(minute)); Wire.write(decToBcd(hour)); Wire.write(decToBcd(dayOfWeek)); Wire.write(decToBcd(dayOfMonth)); Wire.write(decToBcd(month)); Wire.write(decToBcd(year)); Wire.write(0x10); // sends 0x10 (hex) 00010000 (binary) to control register - turns on square wave Wire.endTransmission(); } // Gets the date and time from the ds1307 void getDateDs1307(byte *second, byte *minute, byte *hour, byte *dayOfWeek, byte *dayOfMonth, byte *month, byte *year) { // Reset the register pointer Wire.beginTransmission(DS1307_I2C_ADDRESS); Wire.write(0); Wire.endTransmission(); Wire.requestFrom(DS1307_I2C_ADDRESS, 7); // A few of these need masks because certain bits are control bits *second = bcdToDec(Wire.read() & 0x7f); *minute = bcdToDec(Wire.read()); *hour = bcdToDec(Wire.read() & 0x3f); // Need to change this if 12 hour am/pm *dayOfWeek = bcdToDec(Wire.read()); *dayOfMonth = bcdToDec(Wire.read()); *month = bcdToDec(Wire.read()); *year = bcdToDec(Wire.read()); } void setup() { // the zero refers to the MAX7219 number, it is zero for 1 chip lc.shutdown(0,false);// turn off power saving, enables display lc.setIntensity(0,8);// sets brightness (0~15 possible values) lc.clearDisplay(0);// clear screen byte second, minute, hour, dayOfWeek, dayOfMonth, month, year; Wire.begin(); // Change these values to what you want to set your clock to. // You probably only want to set your clock once and then remove // the setDateDs1307 call. second = 0; minute = 12; hour = 17; dayOfWeek = 3; dayOfMonth = 26; month = 11; year = 13; setDateDs1307(second, minute, hour, dayOfWeek, dayOfMonth, month, year); } void loop() { lc.setChar(0,2,'-',false); lc.setChar(0,5,'-',false); getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year); if (hour<10) { lc.setDigit(0,7,0,false); lc.setDigit(0,6,hour,false); } else if (hour>=10) { t=hour/10; a=int(t); lc.setDigit(0,7,a,false); t=hour%10; lc.setDigit(0,6,t,false); } if (minute<10) { lc.setDigit(0,4,0,false); lc.setDigit(0,3,minute,false); } else if (minute>=10) { t=minute/10; a=int(t); lc.setDigit(0,4,a,false); t=minute%10; lc.setDigit(0,3,t,false); } if (second<10) { lc.setDigit(0,1,0,false); lc.setDigit(0,0,second,false); } else if (second>=10) { t=second/10; a=int(t); lc.setDigit(0,1,a,false); t=second%10; lc.setDigit(0,0,t,false); } } |
Als ik dit upload dan pakt die natuurlijk steeds de tijd die in het programma staat ingevuld dus dat schiet niet op.
Nu staat er in regel 81 t/m 83 dat ik de setDateDs1307 call moet verwijderen dan gebeurt dat niet.
Ik heb regel 29 tot tekst gemaakt met // en daarna 29 t/m 36 maar ik blijf foutmeldingen krijgen.
Kan iemand even aanduiden hoe ik die setdate moet verwijderen svp ?
Ik ben nog bezig C te leren dus ik kom hier even niet uit.
Tnx
All electric components run on smoke. If you let the smoke out, they won't work anymore.
Dit heb ik nu opgelost door de webpagina in de flash memory te zetten met PROGMEM maar dat zou niet nodig moeten zijn.
ik geloof je hoorSnowDude schreef op dinsdag 26 november 2013 @ 19:11:
je moet alleen voor 91 een // zetten
ik zeg erbij dat de gebruikte componenten met mijn gestuntel de afgelopen dagen flink te lijden hebben gehad.
Met het oorspronkelijke programma loopt de klok een tijd goed, maar dan ineens na een uur of paar uur is alles weg. Zo heb ik nu een paar keer geprobeerd op te laden met regel 91 verwijderd maar dan doet die dus niks of heel raar. Gereset, stroom eraf, geduldig gewacht maar geen klok.
Geeft niet, ik heb er genoeg van geleerd, ik ga weer eens verder met wat anders.
Tnx.
EDIT
zonet alle arduino-ide's afgesloten en nogmaals geprobeerd.
nu pakt die wel !
[ Voor 7% gewijzigd door kitao op 26-11-2013 20:30 ]
Misschien http://forum.arduino.cc/index.php/topic,146187.0.html ? Daar is ook iemand waarbij het op een Arduino wel werkt en ander model Arduino niet.Piepersnijder schreef op dinsdag 26 november 2013 @ 19:55:
Als ik een ethernetshield op een Uno plaats, kan ik de sd card benaderen. Daar had ik een webpagina op staan. Als ik de ethernetshield op een Mega plaats, is de sd card niet te benaderen.
Dit heb ik nu opgelost door de webpagina in de flash memory te zetten met PROGMEM maar dat zou niet nodig moeten zijn.
After the first glass you see things as you wish they were. After the second you see things as they are not. Finally you see things as they really are, and that is the most horrible thing in the world...
Oscar Wilde
Inderdaad, hetzelfde probleem.
Ik zal eens proberen of de oplossing die genoemd is inderdaad werkt.
Het is nodig rekening te houden met een verschil in de pin nummering
Zie hier voor de pagina van de SD lib:
http://arduino.cc/en/Reference/SD
quote (arduino website):
"The communication between the microcontroller and the SD card uses SPI, which takes place on digital pins 11, 12, and 13 (on most Arduino boards) or 50, 51, and 52 (Arduino Mega). Additionally, another pin must be used to select the SD card. This can be the hardware SS pin - pin 10 (on most Arduino boards) or pin 53 (on the Mega) - or another pin specified in the call to SD.begin(). Note that even if you don't use the hardware SS pin, it must be left as an output or the SD library won't work. "
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
| //SD file listing for Arduino Mega with Ethernet Shield #include <SD.h> File root; void setup() { // Open serial communications and wait for port to open: Serial.begin(38400); while (!Serial) { ; // wait for serial port to connect. Needed for Leonardo only } Serial.print("Initializing SD card..."); // On the Ethernet Shield, CS is pin 4. It's set as an output by default. // Note that even if it's not used as the CS pin, the hardware SS pin // (10 on most Arduino boards, 53 on the Mega) must be left as an output // or the SD library functions will not work. pinMode(53, OUTPUT); pinMode(4, OUTPUT); pinMode(10, OUTPUT); digitalWrite(10,HIGH); if (!SD.begin(4)) { Serial.println("initialization failed!"); return; } Serial.println("initialization done."); root = SD.open("/"); printDirectory(root, 0); Serial.println("done!"); } void loop() { // nothing happens after setup finishes. } void printDirectory(File dir, int numTabs) { while(true) { File entry = dir.openNextFile(); if (! entry) { // no more files //Serial.println("**nomorefiles**"); break; } for (uint8_t i=0; i<numTabs; i++) { Serial.print('\t'); } Serial.print(entry.name()); if (entry.isDirectory()) { Serial.println("/"); printDirectory(entry, numTabs+1); } else { // files have sizes, directories do not Serial.print("\t\t"); Serial.println(entry.size(), DEC); } entry.close(); } } |
All electric components run on smoke. If you let the smoke out, they won't work anymore.
pinMode(53, OUTPUT); // set the SS pin as an output (necessary!)
// digitalWrite(53, HIGH); // but turn off the W5100 chip!
Pin 10 is niet nodig voor de Mega dus:
// pinMode(10, OUTPUT); // set the SS pin as an output (necessary!)
// digitalWrite(10, HIGH); // but turn off the W5100 chip!
Zelf zet ik de 4 lijnen gewoon in de code en kan ik de lijnen welke niet nodig zijn uitsluiten met //
http://arduino.cc/forum/index.php/topic,86837.0.html
[ Voor 14% gewijzigd door RAdri op 28-11-2013 13:00 ]
Pin 53 (SS) is op de mega niet door gelust naar de ICSP en komt dus niet uit op de ethernet shield (kijk maar naar de schema's van de Mega en ethernet shield) Dus ja hij moet als uitgang staan omdat anders de SPI library niet goed werkt, maar de waarde van de pin maakt niets uitRAdri schreef op woensdag 27 november 2013 @ 13:59:
Het is ook nodig pen 53 hoog te houden:
pinMode(53, OUTPUT); // set the SS pin as an output (necessary!)
digitalWrite(53, HIGH); // but turn off the W5100 chip!
Pin 10 is niet nodig voor de Mega dus:
// pinMode(10, OUTPUT); // set the SS pin as an output (necessary!)
// digitalWrite(10, HIGH); // but turn off the W5100 chip!
Pin 4 is de chip-select voor de SD card, en pin 10 is de chip-select voor ethernet chip. Als je beide interfaces gebruikt is het verstandig om handmatig er voor te zorgen dat tijdens SD data verkeer pin 4 laag is en pin 10 hoog, en bij netwerk verkeer precies anders om.
Ik moet toe geven het is een beetje brak gedocumenteerd en dat veroorzaakt ook alle problemen met de SD kaart op een mega. Vooral omdat de SS pin niet geconnect is naar de ethernet shield
[ Voor 8% gewijzigd door SnowDude op 27-11-2013 14:33 ]
All electric components run on smoke. If you let the smoke out, they won't work anymore.
Daar zit waarschijnlijk het probleem. Als je een webpagina opent van de SD en deze verstuurd gebruik je zowel ethernet als de SD interface tegelijkertijd.SnowDude schreef op woensdag 27 november 2013 @ 14:32:
[...]
Pin 4 is de chip-select voor de SD card, en pin 10 is de chip-select voor ethernet chip. Als je beide interfaces gebruikt is het verstandig om handmatig er voor te zorgen dat tijdens SD data verkeer pin 4 laag is en pin 10 hoog, en bij netwerk verkeer precies anders om.
Ik heb nu de webpagina in het flash geheugen gezet met PROGMEM en daarmee voorkom je deze problemen. Volgens mij werkt dit nog sneller ook.
Nog even over die klok :

(klik)
Die tikt nu lekker weg maar moet helaas soms gereset worden. Regel 91 verwijderen werkt soms, maar niet altijd.
Ik had al een standalone-print gesoldeerd :

(klik)
Die heb ik nu zo gemaakt dat ik die indien nodig opnieuw kan programmeren. Ik zet de tijd in het vorige getoonde programma gewoon op 00:00:00.
Dan kan ik altijd nog rond middernacht de boel resetten en flashen als het in een kastje zit.
Bedankt voor je hulp en anderen zoals mcDavid ook natuurlijk.
Ik vraag me natuurlijk wel af hoe het komt dat die klok niet gewoon eeuwig blijft doorlopen.
Ik bedoel, als die 3 uur tikt waarom dan geen week, of een jaar ?
[ Voor 9% gewijzigd door kitao op 27-11-2013 19:58 ]
ik weet niet, klokje loopt nu nog steedsVerwijderd schreef op woensdag 27 november 2013 @ 20:10:
Zijn er misschien variabelen die 'vollopen'?
misschien los kontakje of stoorantennewerking met die draadjes.
is ook chinees displaytje
vorige keer zag ik hem lopen van 10 tot 2 snachts maar volgende dag tikte enkel de laatste secondewijzer nog.
maar kan ook best aan programma liggen
(klok zat/zit aangesloten op usb van lap, die gaat dan snachts in slaapstand)
[ Voor 12% gewijzigd door kitao op 27-11-2013 20:55 ]
All electric components run on smoke. If you let the smoke out, they won't work anymore.
Misschien valt het mee, klok tikt nog, zit andere rtc op en goede bekabeling. Morgenochtend hoop ik nog steeds de juiste tijd te zien.
| Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72
Als ik je nog een tip mag geven, ontwikkel alles met een standaard arduino en een breadboard, en pas als dat bug vrij werkt moet je echt gaan solderen, het bespaart je echt een hele boel frustratie (en ik spreek helaas uit ervaringkitao schreef op woensdag 27 november 2013 @ 22:37:
Zover reikt mijn kennis nog niet SD. Momenteel weet in bijv. nog niet eens hoe ik mijn lap uit de slaapstand moet houden om maar wat te noemen.
Misschien valt het mee, klok tikt nog, zit andere rtc op en goede bekabeling. Morgenochtend hoop ik nog steeds de juiste tijd te zien.
All electric components run on smoke. If you let the smoke out, they won't work anymore.
Ik wil een proof-of-concept library maken voor software button debouncing (ja ik weet dat er waarschijnlijk al iets dergelijks bestaat, ben het zelf ook al tegen gekomen denk ik) en op dit moment loop ik muurvast bij 't gebruik van arrays.
Ik ben gewend een associative array te gebruiken op deze manier (php style):
1
2
| $auto['fiat']['snelheid'] = 50; $auto['fiat']['type'] = 'sedan';[hr][hr] |
of
1
| $auto['fiat'] = array{ 'snelheid' => 50, 'type' => 'sedan'}; |
Maar wat ik ook probeer ik krijg in de Arduino IDE niets dan errors over ongeoorloofde conversies en dergelijke. Hoe zou ik een dergelijk array in de Arduino IDE moeten aanmaken?
Ik zie op arduino.cc wel een tutorial maar die maakt slechts gebruik van nummers, bijvoorbeeld:
1
| int auto[3] = {2, 4, 5}; |
Wat ik ervan begrepen heb is de '3' in dat geval de omvang / size van 't array... rekt dat dan automagisch op of kun je er gewoon niet meer in duwen dan dat 't array groot is nadat 't array geïnitialiseerd is? En hoe kan ik dan vervolgens een array met auto's maken die elk weer een array zijn met hun eigenschappen (zoals type, snelheid etc.)
Toyota Supra 3.0i Turbo Targa in Panther Black Mica - 300D || 30D || 10-20 || 50mm 1.8 mk1 || 18-55 || 17-85 || 75-300 || Giottos || Manfrotto || Cullmann || Kenko || Hoya
Ik zie ook niet echt in hoe je dat nodig gaat hebben in een arduino-programma.
Bekijk eens de specs van C/C++. PHP of JS op een micro kost gewoon teveel memory en cpu. Deze jongens zijn een stuk meer lowlevel. Maar onderschat niet hoe snel een sketch draaien kan zonder overhead van een OS.
| Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72
Als je buiten het formaat van het array schrijft, schrijf je gewoon in een geheugenlocatie die ergens anders voor wordt gebruikt. Wat dus een heel slecht idee isC.44 schreef op donderdag 28 november 2013 @ 15:08:
Wat ik ervan begrepen heb is de '3' in dat geval de omvang / size van 't array... rekt dat dan automagisch op of kun je er gewoon niet meer in duwen dan dat 't array groot is nadat 't array geïnitialiseerd is? En hoe kan ik dan vervolgens een array met auto's maken die elk weer een array zijn met hun eigenschappen (zoals type, snelheid etc.)
Voor je eis: Maak een class of structure voor een auto, met bepaalde eigenschappen. Maak vervolgens een array hiervan aan.
En is er verschil in voeding? USB is 5v, maar wat hangt er aan Vin?
Misschien heeft het met dit te maken:
http://www.arduino.cc/en/Main/ArduinoBoardNano
The FTDI FT232RL chip on the Nano is only powered if the board is being powered over USB. As a result, when running on external (non-USB) power, the 3.3V output (which is supplied by the FTDI chip) is not available and the RX and TX LEDs will flicker if digital pins 0 or 1 are high.
[ Voor 143% gewijzigd door Raven op 05-12-2013 18:41 ]
After the first glass you see things as you wish they were. After the second you see things as they are not. Finally you see things as they really are, and that is the most horrible thing in the world...
Oscar Wilde
Sorry, Ik zet een led aan/uit via een druk knop die ik 700 ms in moet houden om de led high/low te zetten (vandaar de millis functie). Maar via de VIN gevoed gaat het ledje soms zelf aan/uit of reageert de led langzaam op de druk knop.Raven schreef op donderdag 05 december 2013 @ 18:38:
Definieer "flipt"?
En is er verschil in voeding? USB is 5v, maar wat hangt er aan Vin?
After the first glass you see things as you wish they were. After the second you see things as they are not. Finally you see things as they really are, and that is the most horrible thing in the world...
Oscar Wilde
Heb het volgende aangesloten.Raven schreef op donderdag 05 december 2013 @ 18:45:
Gebruik je de 3.3v toevallig? Zie edit vorige bericht.
een 3 draads schaklaar (5v, gnd, en een draad naar digitax(x) om te schakelen)
en een 2 draads schakelaar (digital(x) en gnd)
De 3 draads schakelaar doet het perfect, schiet me nu te binnen dat ik dan een fout heb gemaakt met de 2 draads schakelaar? Aangezien ik die niet aangesloten heb op 5v. Maar deze opstelling werkt gevoed via de usb wel goed.
Edit: Bedankt Raven, het stukje txt over de 3.3v had ik wel gelezen. Maar omdat ik de schakelaar alleen op een digital input had staan icm ground ging gaat die dus op 3,3v. Nu de ground via een weerstand aan de digital input zitten. en de 2e draad aan 5v. Code iets aangepast en nu werkt het perfect.
[ Voor 116% gewijzigd door Dacuuu op 05-12-2013 19:21 ]
Na al een tijdje meegelezen te hebben wil ik toch eens een aantal vragen stellen.
Heb al een tijdje interesse in de meer technische kant van elektronica dus zeg maar hardware
Ik had eerlijk gezegd nog nooit van de arduino gehoord, bijvoorbeeld wel van raspberry pi, maar dat lijkt me meer toegespitst op het opbouwen van een mediacenter dan echt tot het experimenteren met elektronica.
Is een arduino een beetje doenbaar voor een leek op vlak van elektronica? Ik heb zoals gezegd wel ervaring met programmatie, maar op vlak van elektronica ken ik echt twee keer niks. Ben wel bereid om het één en ander uit te zoeken, maar het moet natuurlijk een niet onmogelijke opdracht zijn
Persoonlijk dacht ik daarom aan één van die arduino starter kits aan te schaffen. Lijken mij zo wat "het handje vast te houden" wat voor mij persoonlijk misschien wel de beste zaak is
Persoonlijk denk ik dat het makkelijker is om van programmeur tot elektronica over te stappen als andersom. Als ik naar mezelf kijk dan begon ik met een lampje, een weerstand en een batterij. Daarna de 7400-serie zoals and,nor-exor en shiftregisters. Toen die stof was uitgewerkt (min of meer dan want daar zit veel aan vast) kreeg ik te maken met mC's. Codes schrijven was echter niet mijn ding dus al paar keer afgehaakt.
(er is maar zoveel wat je van internet kan lenen)
Dus als jij wel 'feeling' hebt voor coderingen dan kan het bijna niet anders of je gaat als gloeiend mes door pakje boter.
Neem gerust een arduino-kitje, kan nooit kwaad.
| Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72
de IDE van arduino en libraries die het tot je beschikking stelt maken het zeer eenvoudig. Het grootste probleem wat ik ervaar is dat ik soms heb van waarom werkt dit niet en dat ik me dan toespits op de software terwijl het dan vaak iets hardwarematig is dat niet koosjer is.
Dat is wel een pitfall. Ook als je gewoon zijt van unlimited memory moet je oppassen met atmega's.
MT Venus E 5KW (V151) P1 HomeWizard | Hackerspace Brixel te Hasselt (BE) - http://www.brixel.be | 9800X3D, 96GB DDR5 6000MHZ, NVIDIA GEFORCE 4090, ASRock X670E Steel Legend, Seasonic GX1000
Goeie tip dit.RobV schreef op vrijdag 06 december 2013 @ 22:19:
Arduino kitje zeker doen. Kijk ook effe op internet voor een paar goede boeken: http://it-ebooks.info/tag/arduino/
Deze lijkt me wel aardig voor Powerblast :

Zelf ben ik hiermee bezig (dankzij jou):

Iedere dag een stukje om toch maar wat programmeren bij te leren.
Vandaag was ik bij pag. 71, een oefeningetje voor Kop of Munt.
Nou sloot ik per ongeluk voeding rechtstreeks op ground aan (via breadboard)
Ik hoorde dat geluidje alsof je de usb eruittrekt.
Ik zag ook dat de uno geen lampjes meer aan had.
USB maar eruit gehaald(=voeding eraf)
Oorzaak verholpen en alles werkt nog steeds prima.
Nu vraag ik me af, schakelt de Uno zichzelf uit bij kortsluiting op Vcc-GND ?
edit: reactie op sissors volgende post
Ok, bedankt. Maakt veel duidelijk.
[ Voor 3% gewijzigd door kitao op 07-12-2013 10:02 . Reden: reactie op volgende post ]
Maar het heeft niks met de Uno te maken. Als jij voeding aan ground kortsluit, is er dus geen voeding meer. Dus staat de Uno dan uit.
Ik weet niet of er aan de kant van de Uno nog beveiliging op zit, maar sowieso zal jouw USB poort beveiligd zijn dat hij niet heel veel meer dan 500mA kan leveren.
Met dit boek - ik heb dan de losse delen - ben ik ooit eens mee begonnen.
Er is ook een deel 4, die heb ik dan niet.
Verkrijgbaar via bieb of bolcom
Hopelijk iets recentere druk als de mijne waar ze nog spijkers in plankjes slaan om verbindingen te kunnen maken. Toen moesten ze waarschijnlijk een breadboard nog gaan uitvinden.

http://www.elektor.nl/pro...oeilijk-1-2-3.11982.lynkx
Lijkt me compleet om mee te beginnen en geen gepruts met nog extra zaken aankopen. Kan ik gewoon lekker van start gaan
Ga nu eens rondkijken voor een goed boek. De hier al genoemde exemplaren lijken allemaal al de moeite waard
Ben vandaag maar al eens aan het inlezen geslagen over transistors, leds, capacitors... Een aantal klinken nog vrij bekend uit de goeie oude "technische opleiding" van 10 jaar terug
[ Voor 27% gewijzigd door Powerblast op 07-12-2013 21:17 ]
We do what we must because we can.
Om een aanvang ermee te maken kun je imo beter eerst een kitje kopen. Als je die eenmaal hebt doorgenomen dan kun je altijd nog (goedkopere) losse spullen erbij nemen. Je kan tenminste in één keer doorgaan en je hoeft niet te stoppen omdat je onderdeeltje x niet in huis hebt.
100 euro is toch aardig wat maar bij deze firma heb ik wel goede ervaringen :
http://www.antratek.nl/the-arduino-starter-kit
Ze hebben mij tenminste nog geen waardeloos spul geleverd.
Die boeken hierboven 'exp. met elektronica' komt trouwens geenof amper een mC in voor. Geeft wel een aardige inleiding in de elektronicacomponenten maar ja, met internet erbij kun je dat tegenwoordig overal vinden.
Lijkt me goede keus Powerblast, en ResuCigam had er al goede ervaring mee dus veel plezier ermee !
Als je geduld hebt (levering kan soms duren) dan koop je hem bijvoorbeeld hier voor $46,50
Free shiping
http://www.ebay.com/itm/S...ain_0&hash=item4d0c93a5d4

Hoe het met garantie zit enzo, kan wel eens tegenvallen.
Je kunt ook hier kijken, is nederlandse (web)winkel
euro 42,50 incl boek + verz.kosten en direkte levering
http://www.hackerstore.nl/Artikel/64
[ Voor 23% gewijzigd door kitao op 08-12-2013 01:32 . Reden: toevoeging ]
Die Antratek ziet er wel interessant uit. Ben ik misschien vergeten vermelden maar ik woon in Belgiëkitao schreef op zaterdag 07 december 2013 @ 23:36:
100 euro is toch aardig wat maar bij deze firma heb ik wel goede ervaringen :
http://www.antratek.nl/the-arduino-starter-kit
Ze hebben mij tenminste nog geen waardeloos spul geleverd.
Het wordt dus de Arduino Starter kit. Deze week maar eens bestellen, heb de komende weken toch wat verlof gepland staan dus dat komt mooi uit, heb ik ineens wat om mijn avonduurtjes mee op te vullen
Wat ik me zo snel wel even afvroeg is hoe het zit met de "veiligheid op overbelasting" laat ik maar zeggen van zo een Arduino bordje? Zover ik lees kan je het ofwel voeden door de USB connectie, ofwel door een aparte voeding via die ingang. "Blaas" je zoiets snel op (moest ik al eens wat verkeerd doen door bijvoorbeeld kortsluiting of iets dergelijks?
Ik kan me namelijk wel voorstellen dat ik in het begin wel al eens wat kabeltjes verkeerd ga aansluiten zonder ik het doorheb.
[ Voor 5% gewijzigd door Powerblast op 08-12-2013 14:01 ]