DS1307 code

Arduino specifieke Software
Berichten: 21
Geregistreerd: 14 Jan 2014, 17:57

Re: DS1307 code

Berichtdoor Hendrik » 29 Mrt 2014, 00:08

Nico,
Ik heb de volgende standen voor de monitor
geen regeleinde
newline
CR
zowel NL als CR
ondertussen staat er geen 200 meer voor het jaartal maar 2000.
als ik eerst start met yes (Y werkt echt niet) dan verschijnt de year vraag zonder vooraf ingevuld met 0,
ik kies dan Newline en geef 14 in etc etc
het resultaat is nu 20014 en dat is weer erg veel.
die extra 0 was er al zomaar bijgekomen.
in elk geval is dit een modus om iets verder te komen.
je bedoelt met niet slimmer dat ik alles in 1 directory moet gaan zetten?
groet

Advertisement

Berichten: 21
Geregistreerd: 14 Jan 2014, 17:57

Re: DS1307 code

Berichtdoor Hendrik » 29 Mrt 2014, 00:14

code vervangen door origineel en nu 2014!!
Nico zeer bedankt voor je steun.
en ik zal 1 map gaan maken.
groet

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: DS1307 code

Berichtdoor nicoverduin » 29 Mrt 2014, 08:01

Hendrik schreef:Ik heb wel twee directories die arduino heten en ik had gedacht dit project met alle bijlagen te scheiden van de standaardcodes en libraries van arduino zelf, maar daarin zit wel die main.h Wordt opgeroepen via wire.h? Moet ik alles toch in 1 map stoppen? terwijl uit de foutmelding de precieze plaats blijkt? kortom een merkwaardig probleem. Mogelijk dat je dit wel begrijpt.
groet
hendrik
Hendrik als je Arduino installeert dan heb je in feite 2 folders:
1) waar de Arduino software in wordt geïnstalleerd. Meestal doe hij dat met het versienummer die je aan het installeren bent. als je die manier aanhoud dan kun je rustig meerdere versies installeren zonder problemen.
2) daarnaast creert de software een folder met daarin een subfolder libraries. In die folder moet je altijd de libraries zetten die je bijvoorbeeld download. Ook de sketches worden automatische in die folder gezet
3) als je nieuwe hardware libraries download voor bijvoorbeeld ATTinies (dus geen sensors oid) dan moet je dat in de installaitesoftware/hardware/... zetten waar nu ook de folders staan voor de AVR processoren.
Door het op deze manier te doen kan je rustig een nieuwe versie van de IDE installeren zonder dat je gelijk weer alle user libraries opnieuw moet installeren.

De boodschappen die je nu krijgt is dat hij setup() en loop() niet kan vinden. Dus even een korte uitleg hoe zo'n Arduino sketch nu werkt:

Een standaard C/C++ (want dat is de sketch eigenlijk gewoon) programma ziet er als volgt uit. Dit is dus main.cpp. Hier begint het programma altijd.
Code: Alles selecteren
#include <Arduino.h>

int main(void)
{
   init();

#if defined(USBCON)
   USBDevice.attach();
#endif
   
   setup();
   
   for (;;) {
      loop();
      if (serialEventRun) serialEventRun();
   }
       
   return 0;
}


Als je de code bekijkt dan wordt er eerst een functie init() aangeroepen. Daar heb je geen toegang toe, maar wat hij bijvoorbeeld doet is alle strings die je gebruikt in je code kopiëren van het flash (=vast) geheugen naar het RAM geheugen. Daarna roept hij setup() aan en dat is de setup uit jouw sketch.
Daarna wordt loop() eindeloos aangeroepen. En dat is loop() uit jouw sketch.
return(0) wordt in feite nooit aangeroepen maar is standaard C als je in bijvoorbeeld msDos, Windows, Linux, OsX etc werkt en daadwerkelijk een programma beïndigt.

Sources (C, C++ etc) worden eerst gecompileerd (omgezet in relatieve machine instructies) en daarna aan elkaar gelinked(absolute machine instructies dus met exacte adressen in het flash geheugen). Daar komt weer een executable (idee van een .EXE of .COM) file uit in de vorm van een .HEX bestand. In het link proces zoekt hij naar een module of routine met de naam setup en loop om main de gelegenheid te geven deze aan te roepen. En die kan hij niet vinden. Dus is er iets mis met jouw installatie oid. Want als je in de Arduino IDE gewoon opstart en ene sketch creëert zijn de zoekpaden correct opgezet en had hij die modules moeten vinden.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 21
Geregistreerd: 14 Jan 2014, 17:57

Re: DS1307 code

Berichtdoor Hendrik » 29 Mrt 2014, 21:32

Nico,
bedankt voor je uitvoerige bijdrage, ik neem die mee op vakantie om het rustig te bekijken en over een paar weken kan ik het gaan proberen.
ik heb goede hoop dat die code gaat werken, want daarvan is die klok een onderdeel.
groeten
Hendrik

Berichten: 21
Geregistreerd: 14 Jan 2014, 17:57

Re: DS1307 code

Berichtdoor Hendrik » 27 Apr 2014, 12:20

Nico,
ik heb de klok aan de praat!! en heb ook het andere klokprogramma aan het werk. De fout was dat de pde file niet goed konstarten omdat, dat eerst in een map met dezelfde naam gesopt moest worden en niet in een map die dezelfde naam had maar in library aanwezig was. Opgelost zover. Maar met de klok wil ik een servo aansturen en probeer eerst een klein proefje wat niet blijkt te werken.
ik krijg de volgende melding;
avrdude: stk500_getsync(): not in sync: resp=0xe0

de code is eenvoudig (zie onderstaand) maar hij geeft geen reactie.
ook als ik andere voorbeelden doe dan krijg ik die melding.
het lijkt er op alsof er in de library wat mis is.
kan ik het ook laten werken zonder de library?

#include <Servo.h> // Use Servo library, included with IDE

Servo myServo; // Create Servo object to control the servo

void setup() {
myServo.attach(9); // Servo is connected to digital pin 9
}

void loop() {
myServo.write(180); // Rotate servo counter clockwise
delay(2000); // Wait 2 seconds
myServo.write(0); // Rotate servo clockwise
delay(2000);
myServo.write(90); // Rotate servo to center
delay(2000);
}
groet
henk

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: DS1307 code

Berichtdoor nicoverduin » 27 Apr 2014, 12:24

Het probleem heeft niets met je sketch te maken maar met de interface tussen de Arduino en de PC. als je goed kijkt wat de Arduino doet, dan zie je dat hij wel compileert maar stukloopt op het moment dat hij wil uploaden naar de Arduino.
Soms helpt:
- Andere USB poort gebruiken
- IDE opnieuw opstarten
- PC rebooten
Is een typisch Windows probleem. Komt vrijwel nooit voor onder OSX naar mijn weten. Linux geen idee.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 21
Geregistreerd: 14 Jan 2014, 17:57

Re: DS1307 code

Berichtdoor Hendrik » 28 Apr 2014, 21:38

dat klopt. ik zie dat er allerlei dingen gebeuren, zoals arduino duemilenove ipv arduino uno en vooral het niet meer beschikbaar zijn van de com poort. ik zit op com 9 maar die is er ineens niet en door omsteken naar andere usb lukt het tijdelijk weer. ik had zelfs 2 servo's aan de praat, gestuurd door de klok. er zit een if else functie in, zodra de else aan de beurt komt gaat het mis met de communicatiepoort. als ik de servo's loskoppel blijft het wel goed gaan, dan wordt de klok goed uitgelezen via com 9.het stukje code staat hieronder;
int angleA;
angleA = dAzimuth - 90;
if (angleA >= 18 && angleA <= 162)
{azimServo.write(angleA);
delay(1000);}
else {
azimServo.write(17);}
delay(1000);
int angleE;
angleE = dElevation;
if (angleA != 17)
{elevServo.write(angleE);
delay(1000);}
else
elevServo.write(15);
}

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: DS1307 code

Berichtdoor nicoverduin » 28 Apr 2014, 22:14

Waar tap jij de spanning af voor de servo's?
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 21
Geregistreerd: 14 Jan 2014, 17:57

Re: DS1307 code

Berichtdoor Hendrik » 29 Apr 2014, 11:25

ik haal de voeding van de arduino, omdat volgens de specs de servo's onbelast 15 mA trekken.
maar ik zal het ook eens met een aparte voeding gaan proberen, want ook nu weer valt de communicatie weer weg zowel in de if als in de else situatie en losgekoppeld weer geen probleem. je hoort van mij.
hendrik

Berichten: 21
Geregistreerd: 14 Jan 2014, 17:57

Re: DS1307 code

Berichtdoor Hendrik » 29 Apr 2014, 13:03

Opgelost! ze blijken soms wel 900 mA te trekken.
geweldig, bedankt
henk

VorigeVolgende

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 84 gasten