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 »

Du skulle ju kunna kolla på något som är mer specifikt för Arduino.
T.ex något härifrån: http://playground.arduino.cc//Main/TutorialList.

Sen så är det ju lite oklart vad du kan om programmering innan. Om det är
absolut ingenting, så har du flera backar att ta dig uppför, så att säga. :-)
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 »

Men om man kör Arduino som är AVR Atmel så fungerar C++ lika bra som C då :)
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 »

C++ är normalt bakåtkompatibelt mot C, det går med andra ord oftast bra att blanda C och C++ i en C++-kompilator. Sen att det är "bad practice" är en annan femma. :)

Jag, liksom de flesta andra, anser C++ vara ganska mycket overkill för det mesta man gör med en 8-bitars MCU. För enklare grejer så blir det lätt ganska många extra rader kod för att åstadkomma samma sak som med C.
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 »

Ja det är just det här jag tänker på.

Behöver man verkligen lära sig C++ när det är klassiskt att välja C när det gäller mikroprocessorer.

Men just när det gäller Arduino så är jag lite fundersam på vad man ska välja. Om jag ska t.ex programmera en LCD display med knappar och sen ska det gå vidare till en högtalare bla bla bla osv. Finns det bibliotek då för C eller C++ endast då?

Vad säger ni arduinoprogrammerare. Vad rekommenderas? :)
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 »

Biblioteken är skrivna i C++, men du måste inte kunna C++ för att använda dom, enbart för att modifiera dom.
Så nej, du måste inte lära dig C++, C räcker fint.

Med reservation för att jag kan ha fel, jag har aldrig programmerat 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 »

> Så nej, du måste inte lära dig C++, C räcker fint.

Ja, eller den lite speciella variant som Arduino använder.
Det är ett hopkok av C och C++ och lite annat. Men det
är som det är och det är det som är enklast att köra.
Användarvisningsbild
Krille Krokodil
Inlägg: 4062
Blev medlem: 9 december 2005, 22:33:11
Ort: Helsingborg

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

Inlägg av Krille Krokodil »

Man kan göra allt om man kan C men inte C++, inget om man kan C++ men inte C. :) Svar nog?
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 inte vet skillnaden på C och C++
Skall man inte diskutera detta punkt slut.
Om man vill programmera en Aurduino skall man inte satsa på språkförståelse ens.
Man laddar ner och testar block som gör färdiga saker.
Funktioner som kan liknas vid Legoblock.
Därifrån kan man lära sig att koppla en led eller motor på en annan pinne , och ändra en tid eller två.
Så Arduino är i mina ögon, ett antal färdiga block med mycken kunskap på nätet.
Så kör ett stort antal exempler, skala av dem och bygg ihop.
Men det generella rådet, liksom om språk, välj det du kan få hjälp med!
Lycka till säger Lasp
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 »

Arduino miljön är inte riktigt så mystisk som många verkar tro.

Den är ju skriven i java så det är inget som måste installeras utan det är ju bara ladda ner
och titta i loggen vad som händer när man kompilerar ett programexempel.

Den kompilerar med GCC ( http://gcc.gnu.org/ )
Programmet som man skriver blir "Mitt_lilla_program.cpp" och kompileras tillsammans med en massa andra
"redan färdigskrivna" filer som finns i Arduino mappen när man packarupp den " \hardware\arduino\cores\arduino" och beroende på vilken
Arduino board du valt , pin definitionerna för tex Mega i "\hardware\arduino\variants\mega"

Anledningen till att Arduino programmet blir så "enkelt" med bara en setup() och loop() funktion
är att det redan finns en main.cpp

Kod: Markera allt

#include <Arduino.h>

int main(void)
{
	init();

#if defined(USBCON)
	USBDevice.attach();
#endif
	
	setup();
    
	for (;;) {
		loop();
		if (serialEventRun) serialEventRun();
	}
        
	return 0;
}
Arduino.h är ju redan skriven, och där finns till exempel en typedef (på gott och ont) som gör att du kan deklarera dina variabler som byte
istället för unsigned char eller uint8_t osv...

(en massa andra "inludes" också)

Allt är ju gjort med avsikten att det ska bli enkelt att komma igång och det har dom definitivt lyckats med,
men priset man får betala är ju att man inte behöver lära sig allt som händer :)

Vill man "bara" skriva en temperatur på en display är det väldigt enkelt och det kanske är tillräckligt för många,
vill man lära sig mer är det ju bara kolla i loggen kanske jämföra med manualen för GCC/G++
och läsa dom filer som inkluderas och förhoppningsvis bli lite klokare. :)

Här kan jag se en fördel för framtida utveckling,
(under förutsättning att man har en avsikt att lära sig mer, och det är en nackdel att det är så enkelt att komma igång så man inte behöver lära sig så mycket :-))
eftersom GCC finns med stöd för många arkitekturer finns det goda möjligheter att det man lärt sig dyker upp igen.
Den "toolchain" jag kör till min Raspbery pi , byggd med crosstools-ng, bygger ochså på GCC så kommandona blir dom samma.
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 »

Lasp skrev:Om man inte vet skillnaden på C och C++
Skall man inte diskutera detta punkt slut.
Om man vill programmera en Aurduino skall man inte satsa på språkförståelse ens.
Man laddar ner och testar block som gör färdiga saker.
Funktioner som kan liknas vid Legoblock.
Därifrån kan man lära sig att koppla en led eller motor på en annan pinne , och ändra en tid eller två.
Så Arduino är i mina ögon, ett antal färdiga block med mycken kunskap på nätet.
Så kör ett stort antal exempler, skala av dem och bygg ihop.
Men det generella rådet, liksom om språk, välj det du kan få hjälp med!
Lycka till säger Lasp
Men är dessa bibliotek skrivna i C eller C++ ?
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 »

Jag brukar säga att det finns inga dumma frågor, utom den oställda.
Men just detta är väl så enkelt att reda ut. Eller hur ( här skulle jag kunna vara sarkastisk, men avstår).
Arduino programs are written in C or C++. The Arduino IDE comes with a software library called "Wiring" from the original Wiring project, which makes many common input/output operations much easier. Users only need define two functions to make a runnable cyclic executive program:
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 »

Förstog inte så mycket. Engelska är inte min starkaste sida :)

Men jag har gjort ett val. Mitt val är C.
Anledningarn:
* C sägs vara mycket enklare än C++
* Man behöver koda mindre kod i C än C++ för samma sak.
* C är lättare att kontrollera
* C är mera lågnivåspråk än C++
* C++ skapades för sitt syfte av att utveckla grövre program
* C++ anses som "en överdrift" när det gäller programmera mikrokontroller
* C kan man komma lika långt med
* C sägs vara roligare än C++
* C kan man programmera OOP men då gäller det skapa OOP också.
* C tar mindre i minne också.

Liksom...linuxkärnan är byggd i C.... :)
Linus Torvalds sade att C++ var ett hemskt språk. Vet inte direkt varför.
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 »

> Men är dessa bibliotek skrivna i C eller C++ ?

I går skrev Wedge: "Komponentbiblioteken är skrivna i C++"
Är det något problem med vad Wedge menade med det ?
Eller är det så att du bara frågar och inte kollar svaren ?

Dessutom kan du enkelt ladda ner biblioteken och kolla själv:
https://github.com/arduino/Arduino/tree ... /libraries

T.ex LCD delarna:
https://github.com/arduino/Arduino/blob ... rystal.cpp
(.cpp ger ju en liten "hint" om vad det handlar om. :-) )

> Engelska är inte min starkaste sida

OK, det är ju inte direkt någon fördel, om man säger så. :-)

> Men jag har gjort ett val. Mitt val är C.

Du vill ju programmera Arduino, och då använder du det språk som
de har skapat specifikt för Arduino. Du har helt enkelt inget direkt val
när det gäller "språk" till Arduino.

> linuxkärnan är byggd i C....

Linuxkärnan har nog inte mycket med programmering av Arduino att göra.

> Linus Torvalds sade att C++ var ett hemskt språk.

Och jag säger att C är en ren katastrof till språk. Men det används ju i alla fall... :-)
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 »

Okej. Om det är så att biblioteken för arduino är skapade i C++ så får jag troligen använda mig av C++.

Men det är så många som rekommenderar C före C++ när det gäller arduino.
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 »

Frågan är seriös: läser du ens svaren du får?
Skriv svar