Vad ska man lära sig: C eller C++ vid arduino

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Vad ska man lära sig: C eller C++ vid arduino

Inlägg 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... :-)
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Vad ska man lära sig: C eller C++ vid arduino

Inlägg 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 :wink:
Användarvisningsbild
Lennart Aspenryd
Tidigare Lasp
Inlägg: 12607
Blev medlem: 1 juli 2011, 19:09:09
Ort: Helsingborg

Re: Vad ska man lära sig: C eller C++ vid arduino

Inlägg 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!
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Vad ska man lära sig: C eller C++ vid arduino

Inlägg 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)?
Användarvisningsbild
Walle
Moderator
Inlägg: 7701
Blev medlem: 14 december 2004, 10:32:18
Ort: Stockholm

Re: Vad ska man lära sig: C eller C++ vid arduino

Inlägg 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.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Vad ska man lära sig: C eller C++ vid arduino

Inlägg 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
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... :-)
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Vad ska man lära sig: C eller C++ vid arduino

Inlägg av Al_Bundy »

> Var sjutton hittar du det !?
> Enligt http://arduino.cc/en/Main/Software
> 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"
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Vad ska man lära sig: C eller C++ vid arduino

Inlägg 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" ?
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Vad ska man lära sig: C eller C++ vid arduino

Inlägg av Al_Bundy »

Jag lyssnar på för många personer samtidigt.
Sen väljer även Doktor Jack Purdum att programmera C i Arduino.

Bild

Så det finns alltså två val. C eller C++ :wink:
RoPa
Inlägg: 630
Blev medlem: 13 januari 2006, 10:32:06

Re: Vad ska man lära sig: C eller C++ vid arduino

Inlägg 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
Användarvisningsbild
Wedge
Inlägg: 1026
Blev medlem: 8 juli 2012, 17:33:33

Re: Vad ska man lära sig: C eller C++ vid arduino

Inlägg av Wedge »

Eh? Preprocessorn klarar #else, och det finns stöd för fler dimensioner i arrayer.
Användarvisningsbild
6502
Inlägg: 174
Blev medlem: 2 mars 2007, 23:04:17
Ort: Tomelillla
Kontakt:

Re: Vad ska man lära sig: C eller C++ vid arduino

Inlägg 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.
nifelheim
Den första
Inlägg: 2489
Blev medlem: 27 mars 2008, 22:31:16
Ort: stockholm

Re: Vad ska man lära sig: C eller C++ vid arduino

Inlägg 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)
RoPa
Inlägg: 630
Blev medlem: 13 januari 2006, 10:32:06

Re: Vad ska man lära sig: C eller C++ vid arduino

Inlägg 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 :shock: ...men det var ju bra i sig! :tumupp:

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" :oops:

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...
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Vad ska man lära sig: C eller C++ vid arduino

Inlägg 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å?
Skriv svar