Sida 2 av 2

Re: Hjälp med kod till arduino och hm55b kompassmodul

Postat: 22 mars 2011, 23:51:41
av korp
Getting Started with Arduino verkar vara en ypperlig plats att börja utforska. Sen tror jag nog det är en bra idé att börja kolla på lite enklare labbar och exempel så du får en förståelse för vad du har framför dig. Visserligen är Arduino ofantligt mycket enklare att komma igång med än många andra mikrokontrollermiljöer men det ÄR en mikrokontroller, och det kräver att man lägger ned en del möda och energi för att förstå sig på, annars kör man fast hela tiden med de mest fundamentala saker.

Re: Hjälp med kod till arduino och hm55b kompassmodul

Postat: 23 mars 2011, 11:14:08
av jesse
radar skrev:Var nog ingen smart ide att skaffa ett arduino om det ska vara så svårt :( kanske lika bra att lägga ner.
det är inte så svårt som det kanske verkar i början. Frågan är vad det är som känns jobbigt?
Att det funkar att skriva till PC:n ger ju dig alla möjligheter att lyckas.

Om du kollar koden så förstår du att genom att skriva så här:

Kod: Markera allt

Serial.print("mitt tal = ");
Serial.print(min_variabel);
Serial.println(""); 
... så skrivs ett tal ut till PC:n och den börjar sedan på ny rad.

Har du funderat på hur du ska mata in den önskade kursen? Det finns många sätt, och det gäller att välja ett sätt som inte är allt för krångligt. Om du ska ha PC:n ansluten till din Arduino när du är ute med båten kan det funka med att skriva in kurs i PC:n. Annars kan man tänka sig att man har två knappar - en "styrbord" och en "barbord" och så ändrar du kurs genom att klicka eller hålla ner en knapp (som när du ställer en digital klocka)... men det kan man lösa senare. I början räcker det att du lägger in önskad kurs i programmet som en variabel:

Kod: Markera allt

int vill_ha_kurs = 45; // ska hålla 45 grader
Du får ju ut ett fint tal från kompassen, och du har lyckats med det. Då har du redan kommit långt, och det är inte så värst mycket kvar. Men det är ju lite matematik inblandat. Du måste ju mata in en kompassriktning som du vill att båten ska hålla. Denna måste jämföras med siffran du får ut från kompassen. Och då är Icecaps matematiska funderingar kanska bra att ha med sig när man ska göra koden:
Säg att du vill åka 1° och båt :twisted: pekar 359°.
Då är differensen (Mål - Verklighet =) -358°... Men lugn, vi kör bara ett par steg mer!

om(Differens > 180) Differens = Differens - 360;
om(Differens < -180) Differens = Differens + 360;
Första steg gör inget i detta fall men andra steget får värdet att bli 2. Låter OK.
Men motsatsen då? 359° och 1°? Detta ger då 358° och första extrasteg får det att bli -2°, andra extrasteg gör inget.

Så det duger fint också och då har du ditt kurs-fel i storlekar om ±180°.
Varför han skriver så mycket är för att förklara hur han tänker för att få fram hur mycket båtens VERKLIGA KURS skiljer sig från DEN ÖNSKADE. Men det är ju mest addition och subtration, så formeln blir väldigt enkel:

Denna kod lägger du inuti void loop() direkt efter Serial.println("");

Kod: Markera allt

/********** MIN EGEN KOD ***********/
/******** BERÄKNAR AVVIKELSE FRÅN ÖNSKAD KURS *****/
avvikelse = kompass - vill_ha_kurs; // nu har vi en avvikelse
if (avvikelse > 180) avvikelse = avvikelse - 360
if (avvikelse < -180) avvikelse = avvikelse + 360;

/* SKRIV UT AVVIKELSE */
Serial.print("Avvikelse = ");
Serial.print(avvikelse);
Serial.println("");
Variablerna kan du deklarera överst i programmet, lämpligtvis efter //VARS:

Kod: Markera allt

int vill_ha_kurs = 45; // önskad kurs i grader
int avvikelse;
Om du inte förstår if-satserna eller variabeldeklarationerna ovan bör du nog läsa lite om C-programmering (eller om Arduino-programmering) för att lära dig de mest grundläggande sakerna. Det är inte så svårt som det ser ut.

Re: Hjälp med kod till arduino och hm55b kompassmodul

Postat: 23 mars 2011, 23:05:57
av radar
tack för en bra beskrivning och lite hjälp på vägen :) Nu kom gnistan tillbaka, ska exprimentera när jag kommer hem. Jo jag behöver läsa på lite, är det c-programmering jag skall kika på ? Behöver lära mig vad alla kommandon har för fuktion och vilka det finns.

Re: Hjälp med kod till arduino och hm55b kompassmodul

Postat: 23 mars 2011, 23:24:18
av korp
Länken jag postade innehåller allt du behöver för att komma igång. Sidan länkar vidare till referensen för programmeringsspråket, hårdvaran... ja allt.

Re: Hjälp med kod till arduino och hm55b kompassmodul

Postat: 23 mars 2011, 23:25:01
av sodjan
Har du ens *kollat* på "Getting Started", eller "Learning" på http://arduino.cc/en/ ?
Har du överhuvudtaget gjort något själv än ??

Re: Hjälp med kod till arduino och hm55b kompassmodul

Postat: 24 mars 2011, 08:45:46
av Icecap
Som sodjan undrar gör även jag...

Att det finns programbitar på nätet är kul, man kan hitta verkligen mycket.

Men precis som att få en bil i delar ska det en bruksanvisning till att samla allt, i fallet med mikroprocessorer ska man skriva VAD man ska använda dessa programdelar till. Att programmera betyder inte att man hittar stumpar här o där och klistrar in dom och kompilerar, man ska faktisk göra en del själv.