Sida 5 av 10
Re: Normalt att det blir bugg om man anropar funktion i funk
Postat: 4 maj 2014, 17:14:25
av Nerre
Al_Bundy skrev:
Så lösningen var att ta bort denna rad
Om den där raden gav felet så beror det nog på att den saknar ett citationstecken...
Det du håller på med är inte att lära dig programmera, du försöker lära dig koda innan du lärt dig programmera.
Att programmera är att "kunna sätta logik på pränt", d.v.s. skriva ner en beskrivning av hur programmet ska fungera på ett strukturerat rätt. Din kod är inte strukturerad, det är spagettikod, sån kod är alltid svår att gör ändringar i och förstå hur den fungerar.
Det du gör är som att försöka bygga ett hus med en tegelsten i ena hörnet och sen jobba sig vidare. Om man istället för en ritning och planerar så blir bygget betydligt bättre. Samma sak med programmering, man gör en "ritning" över hur koden ska fungera och planerar.
Folk har programmerat datorer länge, i stor skala sen 70-talet i alla fall (mycket av grunderna är dock äldre än så). Det finns alltså en massa kunskap om hur man skriver bra program, att helt strunta i att läsa in den kunskapen är respektlöst.
Re: Normalt att det blir bugg om man anropar funktion i funk
Postat: 4 maj 2014, 17:33:22
av sodjan
Jag kanske kan kanske för lite av Arduinos kodsyntax, men jag ser inte
hur kombinationer av "String()" och "+=" ska ge något vettigt resultat.
x += y är ju det samma som x = x + y, så hur ska då
String(first) += String(second) += "?" tolkas?
Re: Normalt att det blir bugg om man anropar funktion i funk
Postat: 4 maj 2014, 17:44:54
av Al_Bundy
Det är två tal jag sätter ihop till en mening. Är inte detta standard i C?
int x = 2;
int y = 4;
int z;
int (String(String(x) += String(y))).toInt() ---> 24
Enkel lösning!
Problemet har löst sig nu. Jag har ändrat och tagit bort lite "display.print()" som jag anses vara lite onödiga.
Nu är det sista problemet:
Räkna ut hur lång tid det tar för processorn att läsa av två stycken DS18B20.
Jag har en while loop som ska loppa en gång per minut. Då trodde jag att läsa denna mening tog knappt några sekunder. Men det gjorde det inte.
sensors.requestTemperatures(); // request sensors temperature
Jag hade då skrivit en liten enkel räknare.
Kod: Markera allt
// time clock
if (i == 60)
{
time++;
i = 0;
}
else
{
i++;
}
delay(1000);
För varje gång time ökas med 1+ så visar displayen EN minut mindre.
Men nu behöver jag hjälp med att räkna ut hur lång tid det tar för processorn att räkna tiden det tar för att hämna in information från DS18B20, två stycken faktiskt. Kanske är ointressant.
Efter det ska jag komplettera med en viss delay();
Vet du hur man ska göra?

Re: Normalt att det blir bugg om man anropar funktion i funk
Postat: 4 maj 2014, 18:00:02
av sodjan
> Är inte detta standard i C?
Tja, fungerar det alltså så som du har skrivit det?
Jag hade förstått det bättre med "+" istället för "+="...
Re: Normalt att det blir bugg om man anropar funktion i funk
Postat: 4 maj 2014, 18:21:39
av Al_Bundy
Det fungerar med += och jag skulle nog tro att det fungerar också med +.
Det finns sänker 100 stycken metoder till för att lösa detta

Re: Normalt att det blir bugg om man anropar funktion i funk
Postat: 4 maj 2014, 18:27:05
av sodjan
OK, ser nu att både "+" (string addition) och "+=" (string appending)
är korrekt syntax. Då kan vi glömma det...

Re: Normalt att det blir bugg om man anropar funktion i funk
Postat: 4 maj 2014, 18:30:12
av TomasL
Det är två tal jag sätter ihop till en mening. Är inte detta standard i C?
Nej det är det garanterat inte.
t (String(String(x) += String(y))).toInt() ---> 24
Är heller ingen C-syntax.
Det är väl Arduinos hopkok, dvs varken C eller C++, utan en salig blandning av dessa och annat de hittat på själva.
Re: Normalt att det blir bugg om man anropar funktion i funk
Postat: 4 maj 2014, 19:00:09
av Al_Bundy
Du verkar bitter idag Herr'n!

och även igår, samt förrgår också för att nämna.
Re: Normalt att det blir bugg om man anropar funktion i funk
Postat: 4 maj 2014, 19:19:49
av TomasL
Jag bitter, knappast.
Det är bara det att det är inte C du skriver, ej heller C++, utan ett saligt hopkok av en massa språk.
Re: Normalt att det blir bugg om man anropar funktion i funk
Postat: 4 maj 2014, 19:32:49
av Al_Bundy
Okej då. Arduinons språk heter wiring om man ska vara exakt. Men det är svårt att låta bli och försöka vara en del av "gänget" om du förstår vad jag menar?
Jag tror inte Athmel kör rent C heller.
Re: Normalt att det blir bugg om man anropar funktion i funk
Postat: 4 maj 2014, 19:37:27
av Nerre
Kör du på en ren AVR eller PIC så använder man normalt "ren C" också.
Det ser ut som om Arduinos språk är nån basic-ifierad variant av C...?
Re: Normalt att det blir bugg om man anropar funktion i funk
Postat: 4 maj 2014, 19:39:27
av TomasL
Atmel använder troligen ingenting.
Det är utvecklaren som bestämmer vilket språk han/hon vill skriva i.
Re: Normalt att det blir bugg om man anropar funktion i funk
Postat: 4 maj 2014, 19:43:40
av Al_Bundy
Nej. Den är inte basic-ifierad variant av C. Den har C-syntaxen, men dock inte printf eller scanf.
Wiring är en vidareutveckling av C-språkdialekterna som används i AVR och PIC.
Liksom...varför krångla till det?
Wiring's syfte är att man ska "wira" ihop saker och ting och det ska göras enkelt.
Arduinos IDE heter egentligen Processing och kommer från Manchester Institute of Technology(MIT).
Även används Arduino i många kurser hos Umeå Universitet och PIC används mindre och mindre. AVR och Arduino är vanligast.
Re: Normalt att det blir bugg om man anropar funktion i funk
Postat: 4 maj 2014, 19:50:16
av Nerre
Men att addera strängar med + är väl inte standard C?
Re: Normalt att det blir bugg om man anropar funktion i funk
Postat: 4 maj 2014, 19:54:11
av TomasL
Nej. Den är inte basic-ifierad variant av C. Den har C-syntaxen, men dock inte printf eller scanf.
Wiring är en vidareutveckling av C-språkdialekterna som används i AVR och PIC.
Nja, Wiring/Processing är en kraftig förenkling av C++ egentligen, + lite annat.
Det är alltså ingen "Utveckling" av C.
Dessutom finns det inga C-dialekter, utan de följer (för det mesta) C-standarden.