Sida 3 av 5
Re: Vad ska man lära sig: C eller C++ vid arduino
Postat: 1 maj 2013, 14:15:43
av sodjan
> Okej. Om det är så att biblioteken för arduino är skapade i C++ så får jag troligen använda mig av C++.
Nej nej nej...
Det är fullständigt ointressant hur eller med vad biblioteken är skrivna!!
De skulle kunna vara skrivna i C, C++, assembler eller något annat.
99% av de som använder Arduino tittar aldrig i biblioteken i alla fall.
> Men det är så många som rekommenderar C före C++ när det gäller arduino.
Jag förstår inte riktigt hur du menar. Man använder ju de verktyg och
det språk som är skapat för just Ardunio. Visst, man kan göra egna
tillägg (alltså i princip skriva egna nya biblioteksfunktioner) men det
är sannolikt inte det man kommer att börja med i alla fall.
Men vad är problemet? Det är ju bara att sätta igång!
Ta problemen när de uppstår istället...
Walle han mellan med i princip samma svar men i lite mer koncentrerat form...

Re: Vad ska man lära sig: C eller C++ vid arduino
Postat: 1 maj 2013, 14:48:33
av Al_Bundy
Nu hänger jag inte riktigt med
> Jag förstår inte riktigt hur du menar. Man använder ju de verktyg och
det språk som är skapat för just Ardunio. Visst, man kan göra egna
tillägg (alltså i princip skriva egna nya biblioteksfunktioner) men det
är sannolikt inte det man kommer att börja med i alla fall.
Ja men nu finns det två verktyg för arduinon. Dessa heter C och C++.
Frågan är vilken som är mest användbarast inom arduinon.
Vi säger att jag ska bygga en CNC maskin eller automatisera massa saker. Då är väll C++ väll bättre
för den håller koll på saker och ting för den har OOP + massa andra funktioner som inte C har?
Men om det har absolut ingen betydelse vilket språk jag använder i Arudinon av C eller C++...så väljer jag då C

Jag får tacka för ditt intresse varför du skriver i denna tråden för att hjälpa en sådan trög person som jag

Re: Vad ska man lära sig: C eller C++ vid arduino
Postat: 1 maj 2013, 14:49:08
av Lennart Aspenryd
Om man har ett nick ock bor på en amerikansk plats antar man att man kan svara på engelska.
Men det verkar som om TS är ett troll, Lasp slutar att mata trollet!
Re: Vad ska man lära sig: C eller C++ vid arduino
Postat: 1 maj 2013, 14:56:50
av Al_Bundy
Jag har aldrig förstått varför ordet troll har utvecklats från troll(sagofigur) -> troll(nättroll) -> troll(person som inte besitter kunskapen som motparten har)?
Re: Vad ska man lära sig: C eller C++ vid arduino
Postat: 1 maj 2013, 15:03:49
av Walle
Du har fått etymologin om bakfoten. Troll kommer från trolling, alltså en typ av fiske där man släpar en (eller flera) rev bakom en båt.
Re: Vad ska man lära sig: C eller C++ vid arduino
Postat: 1 maj 2013, 15:04:19
av sodjan
> Ja men nu finns det två verktyg för arduinon. Dessa heter C och C++.
Var sjutton hittar du det !?
Enligt
http://arduino.cc/en/Main/Software så
heter aktuell programvara "Arduino 1.0.4" och inget annat.
> Frågan är vilken som är mest användbarast inom arduinon.
Och det är (som sagt) skit samma!
> Jag får tacka för ditt intresse varför du skriver i denna tråden för att hjälpa en sådan trög person som jag
He he...

Det är nog jag som är den dummare här...
> Vi säger att jag ska bygga en CNC maskin eller automatisera massa saker. Då är väll C++ väll bättre
> för den håller koll på saker och ting för den har OOP + massa andra funktioner som inte C har?
Vad då "säg att"?
Är det ett verkligt exempel?
Menar du med en Arduino??
En CNC maskin kanske behöver en PLC...
> troll(person som inte besitter kunskapen som motparten har)?
Nej, det betyder det ju inte direkt.
Det betyder någon som avsiktligt inte läser och förstår svaren
innan man fortsätter som ställer samma frågor gång på gång.
Men visst, gränsen mellan ett riktigt troll och någon som
faktiskt inte förstår kan kanske vara hårfin ibland.
I ditt fall verkar det vara en kombination av att slarva med att
läsa svaren (eftersom du frågar samma sak som redan är besvarat)
och att inte riktigt förstå det hela. Jag tror inte att det är med avsikt...

Re: Vad ska man lära sig: C eller C++ vid arduino
Postat: 1 maj 2013, 15:07:59
av Al_Bundy
> Var sjutton hittar du det !?
> Enligt
http://arduino.cc/en/Main/Software så
> heter aktuell programvara "Arduino 1.0.4" och inget annat.
På google. Jag menar verktyg = programeringsspråket. Hade Arduino haft python så hade jag gärna suttit vid det
Men C blir nog bra för mig. Har införskaffat en bok som heter "Beginning C For Arduino"
Re: Vad ska man lära sig: C eller C++ vid arduino
Postat: 1 maj 2013, 15:18:33
av sodjan
> På google.
Exampel !!
> Jag menar verktyg = programeringsspråket.
"Språket" som används i Arduino är en blandning av C och C++,
men en förenklad variant med t.ex en uppsättning egna
typedef's som inte är standard i varken C eller C++. Miljön
lägger även till en egen main() vilket inte heller är standard.
Man kan skriva lite hur man vill, eftersom kompilatorn i princip
accepterar lite av varje. Men enklast är att inte välja (som du
envisas med att kalla det) utan man kör efter de talrika exempel
till Arduino som finns.
Du bekymrar dig nog lite för mycket innan du ens har kommit igång.
*Varför* vill du över huvudtaget "välja" ?
Re: Vad ska man lära sig: C eller C++ vid arduino
Postat: 1 maj 2013, 15:32:30
av Al_Bundy
Jag lyssnar på för många personer samtidigt.
Sen väljer även Doktor Jack Purdum att programmera C i Arduino.
Så det finns alltså två val. C eller C++

Re: Vad ska man lära sig: C eller C++ vid arduino
Postat: 1 maj 2013, 22:10:05
av RoPa
Från förordet till ovan nämnda bok.
Kod: Markera allt
This book is specifically written for the Arduino
family of microcontroller boards using the Atmel family of microcontroller chips. As such, the book is
couched in the framework of the Integrated Development Environment (IDE) that is available as a free
Internet download from Atmel. This means you will not have to buy additional programming tools to learn
C. The implementation of C provided with the IDE is not a full American National Standards Institute
(ANSI) implementation of the C programming language. This implementation, which I will henceforth call
Arduino C, is a robust subset of ANSI C, and, as such, we are free to skip over those elements of the C
language that are not available to you. Although this makes the amount of details to learn a bit smaller, it
also means that some features found in ANSI C have to be “worked around.”
Vilket är ganska irriterande för en som är van vid "riktig" C för det är inte bara att saker fattas utan vissa saker är även annorlunda. Fördelen är alla färdiga exempel och bibliotek. Jag gillar liknelsen med Lego tidigare.
Att börja lära sig programmering med Arduino kan vara bra för att förstå "konceptet" men om man vill lära sig språket C för att kunna programera i andra miljöer så ska man välja något annat än Arduino.
Vad gäller C++ så står detta i kapittel 12 Libraries
Kod: Markera allt
Now things get a little strange because the rest of the file uses C++ language syntax, not just C syntax.
The Arduino compiler is capable of compiling C++ code, and this is the nature of this latest version of the
Arduino IDE.
Som sagt så är libben gjorda i C++ så ska man göra egna eller förstå dem så behöver man kunna lite C++ för att kunna "packa" sina C libs som C++ eller för att ändra/förstå befintliga.
Boken du visar är nog en bra bok för dig om du ska börja programmera en Arduino då den beaktar dessa avvikelser
mot standardspråken, men som du ser av citatet från boken så är inte Arduino språket C språk...
Ardiuno klarar till exempel bara endimensionella arrayer, har inte #else i preprocessorn mm mm mm mm mm
Re: Vad ska man lära sig: C eller C++ vid arduino
Postat: 1 maj 2013, 22:26:07
av Wedge
Eh? Preprocessorn klarar #else, och det finns stöd för fler dimensioner i arrayer.
Re: Vad ska man lära sig: C eller C++ vid arduino
Postat: 1 maj 2013, 22:46:41
av 6502
I slutändan så kompileras den kod man skrivit av avr-gcc så om man väljer att skriva C eller C++ kod spelar i stort sett ingen roll. Arduino plattformen tar alla .ino filer och buntar ihop till en enda lång cpp fil (himla konstigt) som sedan körs igenom kompilatorn. Jag har själv portat en massa gammal C kod till arduino och det funkar utan några som helst problem.
Re: Vad ska man lära sig: C eller C++ vid arduino
Postat: 1 maj 2013, 22:49:33
av nifelheim
funkar bra:
Kod: Markera allt
int[4][4] myArray = { {0, 1, 2, 3},
{3, 2, 1, 0},
{3, 5, 6, 1},
{3, 8, 3, 4} };
klippt ur en header fil som funkar bra:
Kod: Markera allt
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
#define EXTERNAL_NUM_INTERRUPTS 8
#elif defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644P__)
#define EXTERNAL_NUM_INTERRUPTS 3
#elif defined(__AVR_ATmega32U4__)
#define EXTERNAL_NUM_INTERRUPTS 4
#else
#define EXTERNAL_NUM_INTERRUPTS 2
#endif
så jag kan ju inte låta bli att undra lite vad du fått det ifrån
Implementeringen av C99 är säkerligen inte 100 % hos GCC men nära nog

(jag antar att du inte syftade på C89, båda är ANSI standarder)
Re: Vad ska man lära sig: C eller C++ vid arduino
Postat: 2 maj 2013, 00:08:48
av RoPa
Mitt åt, fattar inte varför jag inte fick #else att fungera, fick sätta mig och editera #ifdef #else #endif till #ifdef #endif #ifndef #endif i en sketch jag gjorde som hade en debug flagga på massa satser (fejkad i/o) men när jag nu provar #else i samma så fungerar det precis som det ska

...men det var ju bra i sig!
Hittade då detta tips:
Kod: Markera allt
// BOF preprocessor bug prevent - insert me on top of your arduino-code
#if 1
__asm volatile ("nop");
#endif
http://www.a-control.de/arduino-fehler/?lang=en
Array = "syntax error ba"
Kanske inte ska ge sig på att svara i trådar när jag bara lekt med miljön i några veckor... läxan lärd...
Re: Vad ska man lära sig: C eller C++ vid arduino
Postat: 2 maj 2013, 00:30:27
av Al_Bundy
Om arduino har AVR, betyder det att om man kan arduino så kan man AVR eller vad man ska säga?
Lite konstigt formulerat men det är väll Atmel som gör mikrochips i grenen AVR?
Fördelen mer Arduinon är att den har färdiga bibliotek och elektronikkomponenter som är anpassade till arduinon, samt att AVR chippet sitter integrerat i arduinon. Men AVR är själva chippet som fungerar lika bra om man "tar lös" det. Men då gäller det att göra egna bibliotek för att anpassa elektronikkomponenter så som USB, LCD, SD-minne osv.
Kan man säga så?