Täysin ummikko kaipaa apua asioiden opiskeluun alusta asti

Hei kaikille käyttäjille. Ainoa kokemukseni elekroniikasta ja ohjelmoinnista on vuonna 1995 suoritettu muutama kuukausi auotomaatiotekniikan linjaa. Olen nyt lueskullut forumia jonkin verran ja päätin tehdä itsellenikin tunnuksen.

Haaveena olisi aloittaa esim. ovikellon tekemisellä, jossa olisi myös lämpö mittari ja jolla voisi esimerkiksi säädää led-valaituksen voimakkuutta ym. mitä matkalla mieleeni tulisi, murtohälytin olisi kanssa näin ensimmäisenä mielessä-

Todellakin, jostain olisi opiskelu aloitettava, joten ensimmäinen kysymykseni kuuluu, mitkä opukset olisi hyvä lukea ja sisäistää? Kun ei tiedä “mistään mitään” niin yksin on hankala aloittaa. Ymmärrän kyllä ohlemoinnin joitakin periaatteita, kuten vuokaaviot ovat tuttuja ja Basicilla ollaa tekstipelejä jo C-64 aikana tehty, eli ymmärrän if/else logiikan, tutustuinkin jo “for”-komentoon ja pieniä tiedonhippusia on matkaan tarttunut sen verran, että Andruino taitaa olla se ensimmäinen, mistä aloittaa. Näin olen muisa ketjuista lukenut. Pythonia on suositeltu usein ensimmäiseksi ohjemointikieleksi. Tietokoneeni käyttöjärjestelmä on Debian/Ubuntu.

Uskon hyvällä materiaalilla pääseväni elekroniikan - ja ohjelmoinnin alkuun. Tarkoitus on tehdä hommat aina vuokaavioista asti, jotta ymmärrän miten asiat toimivat. Uskon, että tuollaisen lämpömittari/valosäätimen saisin itse juoteltua ja jopa koodinkin siihen väsäiltyä, varmasti pienien alkuvaikueuksien jälkeen. Tarkoitus laitteeseen on lisätä ominaisuuksia sitä mukaa kun taidot karttuvat. Luultavasti myöhemmässä vaiheessa yritän rakentaa myös vaikeampia laitteita, mutta päätin kerrankin aloittaa aivan perusteista. Mistä (netistä) lötyy mieluiten Suomen kielistä tietoa aiheesta? (Kyllä osaan käyttää Googlea, mutta ajattelin teiltä löytyvän linkkejä paraslaatuisiin oppaisiin. Englantikin taittu, mutta Suomi opiskelukielenä tuntuu helpoimmalta. Myös muutamia nettisivuja olen tehnyt, mut Html- ja css mahtavat melkoisesti erota koodaamisesta, ovathan ne vain merkitsemis- ja tyylinluontikieliä.

Olen pahoillani, jos tällainen ketju jo on, olen todellakin toista päivää tuustumassa forumiin ja kos hommat “näyttävät :slight_smile:” olevan käsityskykyni saavutettavissa, kipinä on syttynyt.

Vielä on monta kysymystä edessä, mutta ensimmäinen siis kuuluu, millä oppailla lähestyä asioita. Kyselen myöhemmin lisää, kun kysyttävää tulee :slight_smile:

-Miika

Kaverini esimmäinen ohje: osta nyt se kolvi ees eka :smiley:

Sanottakoon vielä, että voin aiheesta tehdä aloittelijoille ketjun, kun olen linkkejä itekin löytänyt. Tyyliin otsikolla: “Täysin ummikoille” tms. Oppat sivuun olen tässä ominpäin juurikin tutustumassa…

Vastaan ainakin tähän Andruino-oppaiden kannalta, että jo Wikipediassa katavaa tietoa ja netti näköjään pullollaan oppaita. Noista kun vielä osaisi ssen itselle parheiten taittuvan valita. Anteeksi, että edes kysyin oppaista, mutta todella vaikea valita, taidan joutua lukemaan useamman…

Pythoniinkin oppaita on tuhottomasti. Tietoa siis on, mutta vaikea jäsentää noita järjestykseen.

Näyttäis löytyvän Torrenttina tuo maaailman myydyin Andruino-opas…

Arduino jopa :smiley: :blush:

suomenkielinen opus “sulautetut opi rakentamaan robotteja viikossa” Aika kallis kirja mutta löytyy joka kirjastosta!

Englannin kielisiä videoita youtubesta:
-jeremu blumin “arduino tutorial” sarja on oikeinvkattava ja aika perusteellinen.

  • Make magazinen arduino videot ovat myös hyvin opastavia.

Arduinosta kannattaa aloittaa. Nuo ohjelmakirjastot mitä arduinon “mukana” tulee on mahtava juttu! Sieltä vähän button ja tone koodia sovellat ja on ovikello valmis!

Itse kävisin katsomassa kirjastosta ainakin Sulautetut-kirjaa. En osaa sanoa, kuin sopiva tuo on, mutta ainakaan silloin se ei maksa mitään. Samalla käteen saattaa tarttua joku Python opas. :slight_smile:

Heh. Sarvinen ehti ensin.

Opettele C-kielen alkeet. Se on käytetyin ohjelmointikieli sulautetuissa järjestelmissä. GCC C-kääntäjä on vapaasti saatavissa ja sillä on hyvä harjoitella ohjelmointia ihan ilman mitään arduinoakin. Loppujen lopuksi C-kieli on varsin yksinkertaista oppia, se on matalamman tason kieli ja paljon “laiteläheisempi” kuin esim. Python. Python eroaa C:stä myös mm. siinä, että se on tulkattava kieli, kun taas C käännetään kääntäjälle konekieliseksi ohjelmaksi. C:ssä ohjelmoija joutuu itse hoitamaan monet asiat, kuten esimerkiksi muistinhallinnan.

Ja jos mikrokontrollit kiinnostaa niin tutustu johonkin kirjaan. Tulee kellot, rekisterit ja väylät tutuksi. Ymmärrys toimintaan on usein suuri osa ongelmien ratkaisua. Sitten tutustu jonkin pienen mikrokontrollerin datalehteen huolella. Vaikka ATtiny jotain. osoiteavaruuksia ja käskyjen asjoaikaa kannattaa ihmetellä. Assemblyä kannattaa opetella sen verran, että seuraavat kolme harjoitustehtävää onnistuu atmelilla. (tai valitulla kontrollerilla)

rekistereissä 0 ja 1 on luku. tee niistä XOR funktio ristikkäisten bittien suhteen ja sijoita se rekisteriin 2 eli 0(7) xor 1(0)->2(7) 0(6) xor 1(1) -> 2(6) jne…

Vilkuta morsetuksella nimesi käyttäen timeriä.

kaiuta tekstiä sarjaportista. Myös ctrl+d tulee toimia.

Sen jälkeen tee nuo samat temput C:llä ja ihmettele assembly listausta.

Jossain vaiheessa tajuat kuinka koko härveli toimii. Tämä on kivampi opetella aluksi. Silloin ei tule hyljeksittyä noita asioita tyyliin, että mä oon tehnyt ton C:llä ja noin se toimii niin miksi ihmeessä jokin asia ei sitten toimikaan. Ja on paljon mielekkäämpää opetella osoittia, kun sana muisti tarkoittaa jotain muuta kuin mustaa laatikkoa, jonne voi numeron mukaan lukea ja kirjoittaa. Nähdessäsi muistin osoitteen tiedät heti voiko se olla todellinen ja osoittaako se stackiin vai heapiin.

Mulle vebbisivu on printf("\n\njääkaapissa on %d olutta\n\n", oluet);

Kiitoksia näistä, toivottavasti vastaa jonkun muunkin kysymyksiin, jotka aloittavat “tyhjästä”.

Mikrokontrollereiden osalta voin lyhyen kokemuksen perusteella suositella MBED:iä (http://mbed.org/). Erittäin helppo opetella, koska tuo ei vaadi mitään µC-kokemusta (rekistereiden alustelua jne) eikä omalle koneelle tarvitse asentaa kuin korkeintaan USB-sajarporttiajurit. Idea on tosin kaiketi aika sama kuin Arduinossa (mitä en ole koskaan kokeillut). MBED:istä on tullut myös edullisempi malli.

C kannattaa opetella (sillä tuota MBED:iäkin ohjelmoidaan, siis C/C++). Netistä löytyy tutoriaaleja.

Muistaakseni toi mbed kehitys tapahtuu pilveen piilotetulla palvelulla. Eli kehittäminen tais vaatia nettiyhteyden. Hyvänä puolena vois mainita, että sorsat tallessa vaikka kone kosahtaa.

Minä liputan kanssa vähän tuon Vuokon kanssa samoilla linjoilla. Kaikki lähtee siitä, että tietää oikeasti miten systeemi toimii.

Paljon puhutaan siitä hienon hienosta arduinosta. Minä en siihen perusta. En ollenkaan. Arduinon ohjelmointi sen omilla kirjastoilla piilottaa rautaläheisen toiminnan niin monen mutkan taakse ettei siitä ota kukaan täysijärkinen selvää. Sillä saa nopeasti ja “helposti” näkyvää aikaan mutta todellinen ymmärrys toiminnasta jää täydellisesti uupumaan…

Assemblyn perusteet haltuun ja sen jälkeen ihmettelemään C-kieltä. C:n kanssa tuhratessa keskittyy siihen että ymmärtää oikeasti mitä se koodi tekee. Rekisterit, liput, väylät, muistialueet, ajastimet…

Tämän jälkeen on tarvittaessa helppo siirtyä tekemään mitä tahansa koodia kontrollerille kuin kontrollerille.

Edit: Kuulostaa pirun monimutkaiselta mutta sitä se ei ole. Loogista ajattelukykyä ja halua oppia, sillä pääsee pitkälle. Ei muuta kun rohkeasti tuulta päin!

Kiiros myös näistä vinkeistä. Olen ajatellut, että opettelen sekä Pythonin alkeita sekä C/C++ alkeita. Pythonia onkin jo jonkin verran jopa koodattu ja muutama harjoitustehtäväkin tehty. Tässä vaiheessa en ole vielä c-kieliä opetellut lainkaan, mut alkeitahan tässä vasta opiskellaan ja tutustun myös heti, kun aika riittää ja saan keskittyä rauhassa myös C-kielien alkeisiin. Lähinnä noiden erot mietityttää, koska olen kuullut useita kertoja ihmisiltä, jotka koodausta hallitsevat, että opettele ensin yksi kieli KUNNOLLA ja siirry vasta sitten muihin kieliin, Jokatapauksessa aion kuitenkin jääräpäisesti tutustua molempiin. Kaverin sanoin, että kun C-kieli on hallussa, pärjäät lyhyellä opiskelulla myös muiden kielien kanssa. Ihan mielenkiinnosta kysymys ilmoille: Oletteko itse opiskelleet ensin vain yhtä kieltä ja vasta sitten siirtyneet muiden kielien pariin?

Kokeneemmat sanoivat tässä ketjussa että ei ehkä paras tapa lähteä opettelemaan ole arduino.
Ymmärrän tämän toisaalta, kyllähän se vähän “kätkee” kaiken ja tekee kaiken vaan ihmeelliseksi, ja se miten se tarkalleenottaen toimii jää vähän pimentoon…

Heräsinkin tälläainen ajatus… Olisikos launchpad hyvä alottelu alusta? -Vaatii ehkä hieman enemmän mutta kokonaisuuden ymmärrys lienee parempi.

itse menen vielä arduinolla kun en osaa tähän ubuun asentaa tarvittavia ohjelmia… Pitää kokeilla asentaa toiselle kiintolevylle winukka :unamused:

Tässä olen samaa mieltä, mutta arduino raudan kanssa voi kyllä käyttää mitä tahansa kyseiselle kontrollerilla tarkoitettua ohjelmointiympäristöä, tarttisko väsätä lukianartikkeli asiasta? Linuksi puolelta ei kokemusta, täällä esm. nyt asennettuna winavr ja cvavr, joista jälkimmäinen syystä että sillä paljonkin tuli leikittyä aikanaan ja löytyy valmiit sorsat protoiltuna muutamalle projektille jotka nyt olisi tarkoitus toteuttaa käytännössä.
Onhan arduino ide helpohko valmiine kirjastoineen mutta tosiaan laiteläheinen ohjelmointi hämärtyy.
Mielestäni plussaa arduinossa on shieldit, käyttäjän ei tarvitse välttämättä tehtä rautapuolta ollenkaan

cs.hut.fi/Studies/T-106.530/ … ation.html Siitä kehitysalusta. Ja Makefileen CC:n kohdalle avr-gcc ja INCLUDEPATH aj LIBPATH kohdilleen niin alkaa soimaan. Helppoa kuin heinän teko. Mallia voi katsoa /usr/share/doc/avr-libc/:n alta.

Itseä eniten korpeaa Arduinossa sen olio-mallisuus. Helppo tehdä jotain, mutta kontrolli on poissa lapasesta. Itse olen silloin omalla mukavuusalueellani, kun voin lukea koodia ja näen suoraan millaista assembleria tuosta tulee. if-lauseesta haaraudutaan ja muistiin luku ja kirjoitus näkyvät silmieni edessä. Jos tämä ilo viedään minulta pois, tulee epävarmuus puseroon ja funktio tee_temput() saa lisämääreen niinhänsäväitätmuttamitämuutateet.

Jokin keskeytyksen enablointi ilman lupaani voi olla todella suututtavaa ja tällaiset sivuvaikutukset aiheuttavat harmaita hiuksia.

for(;;){
parsisisääntulomerkki();
sleep();
}
saisi tuosta ominaisuudesta siipeensä.

Hieno ominaisuus on standardi, joskin pöljä tapa liittyä maailmaan rautatasolla shieldeissä. sormiruuvi tätä paheksui jo aikoinaan.

Suosittelen myös launchpadia. Pikkukontrolleri opettaa nuukaksi. Lisäksi tältä foorumilta löytyy paljon juttua siitä. AVR:llä debuggaaminen vaatii debugWiren tai JTAGin ja ne maksavat. Arduinosta en tiedä, kun olen vain kirjoittanut ja sanonut että ehkä toimii ehkä ei fifty-sixty. Launchpadissa on kaikki tungettu samaan alustaan.

Mutta kokeilemalla oppii ja oppinut kaiken kokee.

Jaa-a. Olen kokeillut (hyödytöntä*) konekieltä opinnoissani (en ole vielä valmistunut mihinkään) ja kyllä ohjelmointi on paljon tehokkaampaa kunnollisella kielellä. Mielestäni oliot ja muut modernit kikat lisäävät tehokkuutta oikein käytettynä, mutta voi olla, että niillä on omat huonot puolensa kun kyse on mikrokontrollereista eikä perinteisistä tietokoneista. Resurssit on erilaiset ja ohjelmat eivät ole yhtä laajoja (riippuu tilanteesta tietenkin).

*ei käytössä missään oikeasti, vaan opetustarkoituksessa luotu emulaattoria varten

Pöljä tai ei riippuu miltä kantilta katsoo, kuka katsoo,milloin katsoo, kuun asennosta, kengän numerosta … pro jätkät, kuten sinä, sormiruuvi tai minä joskus entisessä elämässä, duunaa raudan mieleiseksi jne.
Mutta ajatellaanpa asiaa tavantallaajan silmin. Kalle k keksii tystävänsä pia p:n kanssa mainion ajatuksen. tehdäänpä ropotit. kalle päättää tehdä koko pa*kan alusta asti itte, opettelee piirtämään skemaa/pcb:tä pari viikkoa, pcb:n valotusta harjoitellaan jokunen ilta, läträtään lipeän ja ferrikloriitin kanssa,dämn merkkifarkkujen lahkeeseenkin syöpyi reikä, noh nyt onnistui eikun kasaamaan, pahus tuli tehtyälevy peilikuvana ja osatkin on väärällä kotelolla, no eikun uudestaaan…
noh vihdoin päästään kasaamaan,pahus eihän tällä mun kolvilla tuu ku tinasiltoja… pienten alkuvaikeuksien jälkeen päästäänkin tekemään softaa mutta pahus ropotti ei toimikkaan, pari iltaa tutkitaan ja hutkitaan, voi räkä tuli skemaa piirtäessä tehtyä muutama moka…
pia p sen sijaan päätti hommata arduinon, motorishieldin tykötarpeineen ja viikon ahertamiren jälkeen ropotti ottaa ensi liikkeensä.

joillekkin(ketään paheksumatta tahi mollaamatta) vaan on helpompi pinota valmiita levyjä päällekkäin ja alkaa harjoittelemaan softaa…

Olen edelleenkin sitä mieltä että arduino on normaali ihmiselle kaikkine vikoineenkin toimiva ratkaisu. Kynnys aloittaa on matalahko,vaihtoehtoista softakehitysympäristöä voi/kannattaa kokeilla, vuokko laittoikin jo linkin linuxa kayttäville ja assembleriakin kannattaa ainakin vilkaista.

Jottei tämä mene muromaiseksi kura itkuväittelyksi päätän inttämisen aiheesta omaltakohdalta tähän.