Val av mikroprocessor till husvagnsprojekt

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
TobiasEinarsson
Inlägg: 58
Blev medlem: 6 september 2012, 11:15:33
Ort: Göteborg

Re: Val av microprosessor till husvagnsprojekt

Inlägg av TobiasEinarsson »

Lawicel AB har lagt ut en nybörjarkurs för Arduino på svenska på sin blogg. De har tyvärr inga lektioner för hur man styr displayer, men det är nog en bra kurs att börja med. Speciellt om man inte har så mycket erfarenhet sedan tidigare.

http://www.lawicel.se/blog/?page_id=359
Glattnos
Inlägg: 3106
Blev medlem: 29 oktober 2009, 20:01:18

Re: Val av microprosessor till husvagnsprojekt

Inlägg av Glattnos »

Nu kan jag inget om Arduino men visst sitter det en AVR i den? Vilket språk är det tänkt att man ska använda?
Jag håller på med AVR och är i princip nybörjare. Jag började att försöka lära mig att skriva kod i C men eftersom jag aldrig fattade vad som "egentligen hände" så var det väldigt svårt att få till något eget program. Blev mest klippa och klistra från nätet och ändra lite.
Sedan började jag skriva i assembler. Snacka om att det kändes enklare att förstå, det går ju att för sin inre syn föreställa sig vad som helst, typ att man har en byrå med olika byrålådor som motsvarar de olika minnesutrymmena och registren. Så stoppar man en byte i en viss byrålåda för att kunna hitta det sen. Vissa värden får inte plats i en låda utan kräver flera. Stacken är en låda fast med papper i som läggs uppe på varann så att "sist in först ut" gäller. Vissa byrålådor fungerar bara till vissa saker så att man måste flytta omkring sina värden i vissa fall.
Det kändes mycket lättare att försöka sig på C igen efter att man förstått assembler tyckte jag.

Sen anser jag att batteri-spänningen är en bra info. Jag har gjort en mätare i båten. Man vet ungefär vilken spänning det brukar vara, och så ser man hur mycket det "faller" när man startar olika förbrukare. Men det finns ju naturligtvis fler sätt att veta hur mycket ström man har kvar.
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: Val av microprosessor till husvagnsprojekt

Inlägg av jesse »

Egentligen är det tre saker man behöver förstå för att kunna programmera en AVR i C:

1) Programspråket C - läs en grundbok och öva i ett gratisprogram på din PC, t.ex. CodeBlocks.
2) Förstå en AVR, dvs. dess uppbyggnad med de olika inbyggda periferienheterna: CPU, ALU, programminne, ram-minne, EEPROM. I/O (portar), USART, SPI, Timers, AD-omvanddlare och så vidare. Det hittar du antingen i boken "MIKROPROCESSORTEKNIK" av Per Foyer, eller Googlar. Det är här du måste börja titta på databladet också, för att i detalj se hur du styr och kommunicerar med de olika enheterna, via "register".
3) AVR-GCC dokumentationen - dvs. de C-bibliotek som finns till AVR, och speciellt de makron som definierar alla registren i en viss AVR-krets. Det är dessa som gör att du kan skriva PORTB = (1 << PB1); fast språket C i sig inte vet vad PORTB är för något.

Sedan ska man kunna få ihop det här... Det normala i C är att man anropar en funktion för att t.ex. skriva ut data eller vad man nu vill göra. Meni AVR-GC är det ofta bara ett macro som motsvarar en minnesadress. Det beror på att registren som styr de olika enhterna (I/O, timers etc.) är en del av RAM-minnet, och finns i "minnesrymden". Så för att skriva till en port så skriver man alltså en byte till en position i minnet.

Har man lärt sig assembler först har man ofta förstått mer i detalj hur registren fungerar och hur de adresseras. Deta är en fördel när man sedan börjar med C. Men egentligen borde man inte behöva gå den omvägen, då man skriver exakt samma sak i C som i assembler:

assembler:
ldi register16, 0x40
out PORTB, register16

C:
PORTB = 0x40;
Användarvisningsbild
Krille Krokodil
Inlägg: 4062
Blev medlem: 9 december 2005, 22:33:11
Ort: Helsingborg

Re: Val av microprosessor till husvagnsprojekt

Inlägg av Krille Krokodil »

Det är betydligt enklare att komma igång med Arduino C och inte heller bortkastade pengar om man senare vill gå över till assembler/GCC, man kan ladda upp ett program i den som gör den till ISP-programmerare som man då kan använda ihop med bl a Atmel Studio.
östergren
Inlägg: 42
Blev medlem: 7 oktober 2012, 12:57:49

Re: Val av microprosessor till husvagnsprojekt

Inlägg av östergren »

TobiasEinarsson skrev:Lawicel AB har lagt ut en nybörjarkurs för Arduino på svenska på sin blogg. De har tyvärr inga lektioner för hur man styr displayer, men det är nog en bra kurs att börja med. Speciellt om man inte har så mycket erfarenhet sedan tidigare.

http://www.lawicel.se/blog/?page_id=359

Tack så mycket för tipset, för idag dök det nämligen upp ett litet paket på posten till mig :)
Så det är bara att sätta igång!
östergren
Inlägg: 42
Blev medlem: 7 oktober 2012, 12:57:49

Re: Val av microprosessor till husvagnsprojekt

Inlägg av östergren »

Tänkte komma med en liten uppdatering hur det går just nu. Det som har hänt sedan sist är att jag har har fått igång displayen 8), skriver ut lite fin text samt visar hur många liter vatten jag har kvar i tanken med korrekt skalning. Jag la förutom det till att en liten fin diod tänds när det är under 10liter vatten kvar.

Men där jag står just nu är att jag hade tänkt mig en funktion som jag inte riktigt får till. Tanken är att jag har en knapp för att byta visning på displayen. Typ att "startsidan" är vattennivån, ett knappstryck så visar den nästa sida som kanske är strömförbrukning, ytterligare ett så visar den nästa för att slutligen komma tillbaka till vattennivån.
Är det någon här som har gjort något liknande?
Användarvisningsbild
Icecap
Inlägg: 26650
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Val av microprosessor till husvagnsprojekt

Inlägg av Icecap »

Det kallas "Menysystem" och används väldigt mycket.

För min del löser jag det vid att ha en räknare som har lite egenskaper:
* Räknar upp med 1 för varje tryck på "Meny"-knappen.
* När den har räknat till högsta menypunkt + 1 ställs den till noll och den är tillbaka till början.
* När en knapp aktiveras nollställs en tidräknare men om den tidräknare överstiger ett visst värde (oftast 5 minuter) nollas Meny-räknaren.

Med detta klart kan meny-räknaren bestämmas till att visa vilket värde man vill, kanske ställa in parameter osv. Exakt hur man löser det beror på vad som ska lösas, är det enbart visning av "Text x: värde y" kan man lösa det med en tabell som det indexeras i med meny-räknaren.
östergren
Inlägg: 42
Blev medlem: 7 oktober 2012, 12:57:49

Re: Val av microprosessor till husvagnsprojekt

Inlägg av östergren »

Precis Icecap, det är den funktionen jag är ute efter. Dock så har jag försökt läsa mig till på nätet hur man rent kodmässigt ska kunna lösa det som du beskriver det. Utan någon större framgång tyvärr..
Där jag har letat mest är på Arduinos hemsida (http://arduino.cc/en/Tutorial/HomePage), är det så att jag bara har missat det eller kan du hitta det? Alternativt om du kunde posta en liten snutt på din kod, så borde jag lösa problemet sen :)
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Val av microprosessor till husvagnsprojekt

Inlägg av sodjan »

Om du bara vill byta bild enligt ett fast rullande schema (vilket ju är helt OK
om det är 4-5 "bilder"), så skulle jag inte vilja kalla det för ett "menysystem".
Att bara rulla runt mellan bilderna är också väldigt mycket enklare än ett
normalt menysystem där man t.ex ska kunna välja bild o.s.v.

> Dock så har jag försökt läsa mig till på nätet hur man rent kodmässigt ska
> kunna lösa det som du beskriver det. Utan någon större framgång tyvärr..

Väldigt svårt att kommentera då du varken berättar eller visar vad du har gjort.
Men i princip behöver du:

- En funktion som läser av (eller reagerar på) en tryckning på en knapp. Det
kan göra lite olika beroende på t.ex vad som ska hända om användaren inte
direkt släpper knappen, ska bilderna t.ex börja rulla/bytas automatiskt?
Den funktion visar inget, den bara justerar en varabel för <bild-nummer>.

- Du behöver en rutin/funktion per bild som ritar upp just den bilden.

- En funktion centralt i din applikation som beroende på <bild-nummer> visar
den aktuella bilden, jag gissar an den kanske uppdateras någon eller några
gånger per sekund (?). I samband med det kan man även se till att rätt
bild visas.

Eller något liknande, detaljerna beror väldigt mycket på hur du vill att det
hela ska fungerar på, just, detaljnivå...
Användarvisningsbild
Andy
Inlägg: 5893
Blev medlem: 26 september 2004, 18:24:52
Ort: Södern

Re: Val av microprosessor till husvagnsprojekt

Inlägg av Andy »

AndersG skrev:
Det som brukar ta slut fortast i en liten processor är det interna flashminnet.
Och det beror ganska mycket på vad man kodar i. Assembler, så får man plats med mycket. C eller (ugh) Basic får man plats med mindre. Detta förutsatt att man kan koda i assembler :)
”ugh” ?

Nu vet jag inte hur bra Basic kompilatorerna fungerar på AVR (som jag hoppade av för länge sedan) men med PIC Basic så blir den kompilerade koden inte större än asscode!
Det är bara BS.
östergren
Inlägg: 42
Blev medlem: 7 oktober 2012, 12:57:49

Re: Val av microprosessor till husvagnsprojekt

Inlägg av östergren »

Själva funktionen jag eftersöker är som jag skrev tidigare en gång,
"Men där jag står just nu är att jag hade tänkt mig en funktion som jag inte riktigt får till. Tanken är att jag har en knapp för att byta visning på displayen. Typ att "startsidan" är vattennivån, ett knappstryck så visar den nästa sida som kanske är strömförbrukning, ytterligare ett så visar den nästa för att slutligen komma tillbaka till vattennivån."

Eftersom jag är väldigt grön på det här så postar jag i slutet den lilla biten kod jag hittills har fått ihop. Så långt som jag har kommit idag är just den första "bilden" som visar aktuell vattennivå. Nästa "bild" kommer bli snarlik i koden, den ska visa aktuell temperatur på varmvattnet via en pt100 eller pt1000. Frågan är bara hur man går tillväga för att växla mellan dessa bilder då?

Som sagt är ganska ny på detta, hoppas ni har överseende med det:) Är grymt tacksam för all hjälp iaf!

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Anger vilka ingångar som används av LCD-display
int LCDval;


void setup(){
lcd.begin(16, 2);
pinMode(13, OUTPUT); // Sätter 13 till utgång
}

void loop()
{
lcd.clear(); //Rensar LCD från tidigare text
lcd.print("Water Level:"); // Text som visas på rad 1
int value = analogRead(0); // Val av ingång som skall läsas av
lcd.setCursor(0,1);
lcd.print(value/20); //Avläsnining av värdet från vald ingång, skalning av visning
lcd.setCursor(3,1);
lcd.print ("Liters");// Textrad efter analogt värde
if (value<205)digitalWrite(13, HIGH); //Tänder diod på pin13 om analogt värde understiger 205 eller 10liter
if (value>205)digitalWrite(13, LOW); //Släcker diod på pin13 om analogt värde överstiger 205 eller 10liter


delay(500);
}
Användarvisningsbild
Icecap
Inlägg: 26650
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Val av microprosessor till husvagnsprojekt

Inlägg av Icecap »

Et ganska enkelt sätt är:

Kod: Markera allt

switch(Menu_Index)
  {
  case 0:
    // Här kan man skriva ut vattennivå
  break;
  case 1:
    // Här kan man skriva ut strömförbrukningen
  break;
  case 2:
    // Här man man skriva ut annat
  break;
  case 3:
    // Och här kan man skriva ut ytterligare saker
  break;
  }
Utanför detta ska Meny-knappen räkna "runt" Meny_Index.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Val av microprosessor till husvagnsprojekt

Inlägg av sodjan »

> Frågan är bara hur man går tillväga för att växla mellan dessa bilder då?

Ja hur gör man... :-)

Hur skulle du göra själv, om *du* var Arduinon?
Vad skulle du behöva för "input" o.s.v. ?
Vad skulle *du* behöva hålla reda på för att visa rätt bild?

Din kod förstår jag inte, hur körs "setup" resp "loop"?
Finns det ingen "main" eller liknande?

En knapp känner man enklast av genom att man (t.ex via en timer)
regelbundet (säg 10-20 gånger/sek) kollar om knappen är intryckt eller inte.
Sedan agerar man på detta och om man bestämmer sig för att någon
faktiskt trycker på knappen (inte bara en störning) så gör man det som
ska göras om någon trycker på knappen. O.s.v......
mattswe
Inlägg: 159
Blev medlem: 20 augusti 2012, 13:27:51

Re: Val av microprosessor till husvagnsprojekt

Inlägg av mattswe »

http://www.coagula.org/content/pages/tu ... ay-arduino
Här finns ett tutorial om hur man kopplar ihop en Arduino Uno med en LCD, samt programmerar en meny till den.
(Jag kopierade länken från en annan aktuell tråd här på forumet)
Användarvisningsbild
Bosen
Inlägg: 1753
Blev medlem: 18 juli 2005, 10:56:31
Ort: Karl Gustav, Varberg
Kontakt:

Re: Val av microprosessor till husvagnsprojekt

Inlägg av Bosen »

Sodjan:
I Arduinio C så använder man "Setup" för kod som bara skall köras en gång och "Loop" för själva programloopen. Inget mer behövs.
Skriv svar