Hur lägger ni upp programmeringen

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
cazz
Inlägg: 963
Blev medlem: 11 maj 2009, 12:44:01
Ort: Småland

Hur lägger ni upp programmeringen

Inlägg av cazz »

Bara undrar hur ni lägger upp medelstora programmeringar i detta fall arduino?

De gånger jag har programmet så är det väldigt enkla saker men har nu ett projekt (RGB julstjärnan) och nu blir det flera variablar att hålla koll på.

Så ritar ni upp det för hand på papper eller bara köra ni try an error :D
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43148
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Re: Hur lägger ni upp programmeringen

Inlägg av sodjan »

> Så ritar ni upp det för hand...

Det beror ju väldigt mycket på vad du lägger i begreppet "det".
Jag brukar nog i alla fall göra en mappning av t.ex. I/O pinnar
till funktioner med papper och penna. Kanske en grov mappning
av minnet eller simulering av några kritiska funktioner.
Användarvisningsbild
Icecap
Inlägg: 26105
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Hur lägger ni upp programmeringen

Inlägg av Icecap »

Om det är Arduino eller verkliga saker är i grunden likgiltigt, principen är det samma.

Först o främst definierar jag projektet! Först övergripande och sedan ett steg ner i detaljer.
Jag noterar oftast detta i källkoden men är det ett mer allvarligt projekt än en RGB julstjärna skriver jag en del papper i LibreOffice.

Men källkoden kan innehålla typ följande:
/*
Purpose:
* Make a christmas star tingle due with the use of RGB-LED's.
* The star has 6 arms with 2 RGB-LED on each and one RGB-LED in the center.
* The LED's shall be controlled individually/combined/whatever (välg rätt sätt) through PWM/On-Off (välj rätt sätt).

På detta sätt kan jag minnas vad som ska ske överordnad.

Om vi t.ex. antar att alla LED drivs "parallellt" och att färgerna ska "glida" mellan olika färger hade jag gjort några funktioner som klarar detta åt mig.

Först en funktion som ställer nya mål för hhv. Röd, Grön och Blå. I mitt fall hade jag slumpat med en primtalsfunktion.

Sedan en funktion som "känner till" vad status är nu (R, G & B nivå) och kan stega i rätt takt mot de nya mål.

Sist en funktion för att ställa de 3 PWM-kanalers duty-cycle.

Dessa tre hade sedan kört så att när ett mål var nådd (glidit till nya R, G & B-värden) hade det utlöst nya värden till R, G & B.
Så länge de inte är nådd hade funktionen för att "glida" dit körts regelbundet och resultatet av den hade ställd PWM-kanalerna.

På detta vis blir "huvuddelen" av programmet rimligt enkel att läsa och förstå om man nu ger de rätta namn till rutinerna.

Varje sub-rutin (funktion) ska sedan (kanske) ha vissa input och det borde framgå av dom hur deras funktion lösas. Igen enkelt att läsa och underhålla.
Användarvisningsbild
swesysmgr
Inlägg: 14127
Blev medlem: 28 mars 2009, 06:56:43
Ort: Göteborg

Re: Hur lägger ni upp programmeringen

Inlägg av swesysmgr »

cazz skrev:Bara undrar hur ni lägger upp medelstora programmeringar i detta fall arduino?
Skriver en grov struktur först med kommentarsrader som visar vad som skall hända för varje moment inne i loop() och sedan tomma funktioner med en kommentarsrad som visar vad varje funktion skall göra. Då tycker jag att man ganska snabbt ser om man är på rätt spår eller behöver tänka om ifall programmet är på 100 till 1000 rader.

En bättre editor än Arduino-miljön tycker jag är att föredra, har använt https://code.visualstudio.com/ med Arduino plugin (allt gratis).
cazz skrev:Så ritar ni upp det för hand på papper eller bara köra ni try an error :D
Kopierar en bra bild från nätet av den modell som skall användas och lägger den som bakgrund i ett ritprogram som stödjer lager.

Ritar in/utsignaler med pilar i olika färger + kommentarer i ett eller flera lager ovanpå. Koppla sedan upp med kablar i samma färger (röd/grön/blå för PWM-kanalerna i en julstjärna t.ex.) och risken för fel minskar, framför allt om man behöver göra avbrott i kopplandet.

Detta med lager kan låta löjligt men då kan du redigera kommentarer m.m. fritt utan att påverka bilden av själva arduinon. Inget fel med papper och penna men att sudda och ändra färger är krångligt och papper har en tendens att ha kommit bort om du vill uppgradera julstjärnan till julen 2020. Med alla filer i samma mapp finns allt kvar.
Användarvisningsbild
cazz
Inlägg: 963
Blev medlem: 11 maj 2009, 12:44:01
Ort: Småland

Re: Hur lägger ni upp programmeringen

Inlägg av cazz »

Tack för svaren.

Ska kolla hur jag ska göra om jag bara slutar ändra mig hela tiden.

Grunden var först att ha en enkel stjärna.
Det slutade med man har en sjuärmad stjärna och två LED på varje del och en i mitten.
Det var tänkt att jag ska ha en grön, gul och en röd på varje rad.
Det slutade med att det blev RGB lampor istället.
Så då tänkte man att man kan köra röda, gröna och blåa lite snyggt.
Det slutade med att man kom på att man kan blanda färgerna.
Som tur är då jag kommer köra transistorer att det inte blir så mycket blandat men endå man går från enfärgade LED och nu ska man
blanda och då blir det mer jobb att tänka ut :D
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45168
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Hur lägger ni upp programmeringen

Inlägg av TomasL »

Skriver en kravspec på både mjukvara och hårdvara.
Letar reda på lämplig processor för jobbet.
Mappar io-pinnar, vanligtvis i Excel, där jag ger portar mm samma namn de har i nätlistan. Använder alltid samma namn både i EDA-systemet som i källkoden.
Därefter gör jag som de andra. Tomma funtioner med både beskrivningar och pseudokod
Användarvisningsbild
Klas-Kenny
Inlägg: 11291
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: Hur lägger ni upp programmeringen

Inlägg av Klas-Kenny »

Brukar bara köra på, så att säga.
Har ju i princip alltid ett kopplingsschema som talar om hur hårdvaran runt om ser ut. Sen brukar jag börjar med initialisering av all hårdvara och att skriva lågnivådrivare för hårdvaran i processorn, och därefter drivare för all hårdvara som processorn sedan styr eller pratar med.

När man har funktioner på plats för att styra all hårdvara runt om så börjar jag med den "riktiga" funktionen. Då börjar helt enkelt i någon ände och jobbar mot målet. Försöker först få till någon grov, grundläggande funktion, sen bygger på alla detaljer allt eftersom.
Användarvisningsbild
4kTRB
Inlägg: 18279
Blev medlem: 16 augusti 2009, 19:04:48

Re: Hur lägger ni upp programmeringen

Inlägg av 4kTRB »

Om programmet är objektorienterat kan man lämpligen lägga upp programmet i objekt.
Annars flödesdiagram som då man kodade i assembler.
Användarvisningsbild
Micke_s
EF Sponsor
Inlägg: 6741
Blev medlem: 15 december 2005, 21:31:34
Ort: Malmö

Re: Hur lägger ni upp programmeringen

Inlägg av Micke_s »

Brukar dokumentera pinnarna som kommentater i ino filen.
Schemat ritar jag oavsett i eagle, så det finns där.
Sedan någon folder med pdf:er, bilder och annan info.

Är det större så kan man börja tänka på klasser och dela upp det i filer.
Notering om klasser: så länge objektet skapas i början och aldrig tas bort så är inte minneshantering ett problem.

Större projekt där mycket kod är inblandad så blir det lite mer dokumentation utanför koden.
Som flödesdiagram, in/ut kommandon till omvärden och vad de olika delarna ska göra.

Mindre projekt så är vettiga kommentarer i koden bäst enligt mig, gäller förvisso större projekt också.
Skriv kommentarer på hela funktioner vad den är tänkt att göra istället för varje kodrad. Undvik knepig kod.
Var gränsen för mindre projekt går beror på person.
Användarvisningsbild
Synesthesia
Inlägg: 573
Blev medlem: 22 januari 2010, 19:14:10
Ort: Mellan Göteborg och Kungsbacka

Re: Hur lägger ni upp programmeringen

Inlägg av Synesthesia »

För all programmering:
Sammanställ beskrivningar, kravspecar, önskemål mm, kanske göra tabeller över vissa saker för att göra det mer överskådligt, sedan brukar man komma på hur man vill programmet skall se ut på ett ungefär.

Programmeringen: gör först I/O (fast det brukar kompilatorn sköta, man behöver bara konfigurera), sedan andra funktioner som använder I/O osv, i den ordningen.
Ofta testar jag funktioner som kan vara mer svårtestade i en vanlig PC-kompilator innan jag lägger in det, då kan man även även kompilera ihop det med något grafiskt interface med lite programvara som gör att det skall motsvara hårdvaran eller I/O-interfacet i den hårdvara skriver program till för att kunna testa lättare.
Undviker globala variabler, om de ändå finns blir det helst som struct.

För ditt Arduino-projekt hade jag gjort ett library som inkluderat funktioner för att enkelt styra alla ljus-utgångar, och hade t.ex funktioner för steglösa övergångar varit med hade jag lagt det i samma library för att förenkla programmet som styr ljuset.
SeniorLemuren
Inlägg: 7779
Blev medlem: 26 maj 2009, 12:20:37
Ort: Kristinehamn

Re: Hur lägger ni upp programmeringen

Inlägg av SeniorLemuren »

swesysmgr skrev: 1 december 2019, 16:27:15 En bättre editor än Arduino-miljön tycker jag är att föredra, har använt https://code.visualstudio.com/ med Arduino plugin (allt gratis).
Tyckte det var ett bra tips, jag använder ju visualstudion till mina hemsidor. Det finns ju flera olika plugin för Arduino. Har du någon erfarenhet av vilken som är bäst?
Användarvisningsbild
HUGGBÄVERN
Tidigare soundbrigade
Inlägg: 32626
Blev medlem: 23 augusti 2006, 22:44:11
Ort: Lilla Paris
Kontakt:

Re: Hur lägger ni upp programmeringen

Inlägg av HUGGBÄVERN »

Top - down.
Specar grovt vad jag vill ha gjort. Delar upp projektet i mindre block som delas i än mindre och sedan är jag kanske på programmeringsnivå.
Användarvisningsbild
swesysmgr
Inlägg: 14127
Blev medlem: 28 mars 2009, 06:56:43
Ort: Göteborg

Re: Hur lägger ni upp programmeringen

Inlägg av swesysmgr »

SeniorLemuren skrev: 1 oktober 2020, 10:05:24
swesysmgr skrev: 1 december 2019, 16:27:15 En bättre editor än Arduino-miljön tycker jag är att föredra, har använt https://code.visualstudio.com/ med Arduino plugin (allt gratis).
Tyckte det var ett bra tips, jag använder ju visualstudion till mina hemsidor. Det finns ju flera olika plugin för Arduino. Har du någon erfarenhet av vilken som är bäst?
Har inte använt Arduino så mycket och bara kört Microsofts VS-code plugin för Arduino (den med flest röster). Jämfört med en "normal" IDE tycker jag Arduinos original är väldigt torftig.
bleb
Inlägg: 5
Blev medlem: 1 mars 2016, 15:56:38

Re: Hur lägger ni upp programmeringen

Inlägg av bleb »

Tråden var ju ganska gammal så jag hoppas det har löst sig redan för TS...

Men när det kommer till ett program/projekt som är lite större än "hello world", är en bättre IDE ett måste (man får nästan mer hjälp i notepad++ än man får i Arduinos IDE).
Jag kör på Microsofts VisualStudio, (Community versionen är gratis, precis som Code).
Till detta kör jag vMicro (VisualMicro.com) som extension för att få Arduino kompabilitet.
(den lägger sig som ett skal över arduino IDE så man blir inte helt av med den...)
VisualMicro kostar (500 sek för en maskin i "evighet" eller 120 per år, samt gratis att testa i 30 dagar) men är helt klart värt det, även om den har sina egenheter...
Men väl i Visual Studio, har du sen all funktionalitet man har i "vanlig utveckling",
Så "Peek definition", "find all referenses", "rename", "call hierarchy" etc, är bara ett högerklick bort,
så koden blir inte i sån oordning som den kan bli när man labbar omkring och klipper och klistar och hittar på variabler on the fly...
(själv är jag något av en ninja på att lämna oanvända funktioner kvar efter mig annars...).

Ett "julstjärneprojekt" hade jag bara kört på om jag suttit i VisualStudio...
Gimbal
Inlägg: 7872
Blev medlem: 20 april 2005, 15:43:53

Re: Hur lägger ni upp programmeringen

Inlägg av Gimbal »

Man tar en bit i taget. :rofl
Skriv svar