Arduino - projekti, ideje, savjeti, problemi izdvojena tema

poruka: 1.365
|
čitano: 442.380
|
moderatori: DrNasty, pirat, XXX-Man, Lazarus Long, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
Ova tema je sadržajno povezana sa sljedećim temama: Uvod u elektrotehniku (istosmjerna struja)
15 godina
offline
Arduino - projekti, ideje, savjeti, problemi

A nista, onda cu krenuti s izradom vlastitog IDE-a 

Moj PC  
0 0 hvala 0
15 godina
offline
Arduino - projekti, ideje, savjeti, problemi

Netko vidi pokvareni printer, a drugi kutiju za osvjetljavanje PCB-a 

 

Ispricavam se na potato slikama, razbio sam primarni mobitel 

 

Znaci radi se o UV traki, arduino ko timer , iskoristio sam 3 tipke(-5sec, +5sec i start/stop) originalne koje sam hackao s PCB-a od printera  i 4 tipku sam zamjenio s OLED-om

POWER led radi kad ima napajanja(direkt na 5V od arduina, naravno i resistor), a ovo di je tinta i papir blinka kad je ukljucena traka(cisto da upozori jer nije bas dobro gledat u UV)

menu jednostavan, odabere se vrijeme i stisne start(Pise Set time: i ispod vrijeme u sekundama), a kad se osvjetljava pise remaining i odbrojava.

 

Jednostavan projekt od 2 sata da ne moram vise peglati plocice kad mi je hitno, a online narudbe potraju oko mjesec dana pa nije bas najzgodnije.

 

EDIT:

Sad vidim na slikama da jedna traka ne radi(zamjenio sam + i - )

Poruka je uređivana zadnji put sub 2.9.2017 13:29 (CroNk3r).
Moj PC  
6 0 hvala 0
15 godina
offline
Re: Arduino - projekti, ideje, savjeti, problemi
mbaksa kaže...

Probao sam u Arduino IDE-u izvući klasu u odvojene fajlove, ali mi ne uspijeva. Kaže "error: previous definition of 'class Icon3'", a ta klasa definirana samo i isključivo u .h fajlu. Bezveze.

 Koristiš li include guard? Možda je do toga.

 

@CroNk3r:

Jesi li probao PlatformIO? Baziran je na Atom editoru, podržava sve ploče kao i Arduino IDE, a ima korisne dodatke kao git integracija, code completition, serial monitor, itd.

Poruka je uređivana zadnji put sub 2.9.2017 13:40 (Alkaline).
15 godina
offline
Re: Arduino - projekti, ideje, savjeti, problemi
Alkaline kaže...
mbaksa kaže...

Probao sam u Arduino IDE-u izvući klasu u odvojene fajlove, ali mi ne uspijeva. Kaže "error: previous definition of 'class Icon3'", a ta klasa definirana samo i isključivo u .h fajlu. Bezveze.

 Koristiš li include guard? Možda je do toga.

 

@CroNk3r:

Jesi li probao PlatformIO? Baziran je na Atom editoru, podržava sve ploče kao i Arduino IDE, a ima korisne dodatke kao git integracija, code completition, serial monitor, itd.

Na liunxu koristim PlatformIO ekstenziju za VSCode i nisam primjetio veliku razliku izmedu nje i visualMicro(Visual Studio ekstenzija).

IntelliSense radi savrseno, serial isto, git nisam isprobavao, ne koristim ga puno, a kad koristim, idem preko njegovog app-a.

 

Jedino su mi klase nezgodne u istom file-u, a u posebnom ne rade bas najbolje, ali to je vise zbog C++ovih musica.

 

 

Poruka je uređivana zadnji put sub 2.9.2017 14:07 (CroNk3r).
17 godina
moderator
online
Re: Arduino - projekti, ideje, savjeti, problemi
Alkaline kaže...
mbaksa kaže...

Probao sam u Arduino IDE-u izvući klasu u odvojene fajlove, ali mi ne uspijeva. Kaže "error: previous definition of 'class Icon3'", a ta klasa definirana samo i isključivo u .h fajlu. Bezveze.

 Koristiš li include guard? Možda je do toga.

Prvi put čujem za to. Kak se to uključi/isključi?

14 godina
odjavljen
offline
Arduino - projekti, ideje, savjeti, problemi

De mi recite kad se mogu koristiti objekti? Kad ih je najbolje koristiti? Jedinu primjenu vidim za te ikonice i prikaz kilometraže i ostalih informacija.

Dal se može radit objekt objekta, tipa da bude ovako nešto

 

objekt1.objekt2.funkcija()

Poruka je uređivana zadnji put sub 2.9.2017 14:46 (Dex.pwn).
 
0 0 hvala 0
17 godina
moderator
online
Re: Arduino - projekti, ideje, savjeti, problemi
Dex.pwn kaže...

De mi recite kad se mogu koristiti objekti? Kad ih je najbolje koristiti? Jedinu primjenu vidim za te ikonice i prikaz kilometraže i ostalih informacija.

Imaš hrpu toga na netu, npr. ovo ili ovo.

 

Objekt je inače instanca klase. Klasa je nacrt, prototip objekta. Da znaš za ubuduće, da te to ne buni. Ljudi često to dvoje ne razlikuju ili za i jedno i drugo govore istu riječ.

 

Dok ne usvojiš OOP, objekti se mogu koristiti slično kao i strukture (struct), pogotovo ako želiš imati neke funkcije koje će raditi s atributima objekta, znači za bolju organizaciju podataka, za stavljanje podataka i funkcija koje barataju njima pod isti krov.

 

Dex.pwn kaže...

Dal se može radit objekt objekta, tipa da bude ovako nešto

 

objekt1.objekt2.funkcija()

Može. Tada ti je objekt2 sastavni dio objekta1. Kad se funkcija nalazi unutar objekta/klase onda je se naziva metoda. Isto kao što se varijable objekta/klase nazivaju atributi.

 

Kad se koriste pokazivači onda umjesto . ide ->, pa bi bilo tipa objekt->metoda().

15 godina
offline
Re: Arduino - projekti, ideje, savjeti, problemi
Dex.pwn kaže...

De mi recite kad se mogu koristiti objekti? Kad ih je najbolje koristiti? Jedinu primjenu vidim za te ikonice i prikaz kilometraže i ostalih informacija.

Dal se može radit objekt objekta, tipa da bude ovako nešto

 

objekt1.objekt2.funkcija()

Uzmi neki java ili c# tutorial i prodi ga cijelog, nauci OOP. (mozes i c++, ali po mom misljenju ova 2 su najlaksa za nauciti OOP)

Bez da naucis OOP neces ni primjetiti situacije di bi bilo zgodno koristiti objekte.

 

Googlaj si nasljedivanje objekta, ne radi se na taj nacin nego unutar klase nasljedujes jednu vrstu objekta i onda mozes koristiti funkcije tog objekta.

Poruka je uređivana zadnji put sub 2.9.2017 15:54 (CroNk3r).
14 godina
odjavljen
offline
Arduino - projekti, ideje, savjeti, problemi

OOP i proceduralni nemaju nikakve razlike osim u urednosti koda?

 
0 0 hvala 0
17 godina
moderator
online
Re: Arduino - projekti, ideje, savjeti, problemi

Razlike su onolike koliko koncepata OOP programiranja želiš iskoristiti.  Na kraju krajeva, sav se taj kod u konačnici pretvara u strojni kod.

 

Filozofija je drugačija. Recimo kad ja radim tako nešto, meni je logika da objekti budu samostalne cjeline, da se znaju raditi interakciju s drugim objektima i onda samo okinem nešto, a sve ostalo zna kako se međusobno ponašati.

 

Vjerojatno nećeš baš razumjeti što sam sad napisao - ali ako dublje zagaziš u OOP i upoznaš njegovu filozofiju, bit će ti jasno.

15 godina
offline
Arduino - projekti, ideje, savjeti, problemi

U grubo, kod manjih programa nije ni tolko velika razlika, ali OOP najvise dolazi do izrazaja kad imas veliki program na kojem radis par dana i za svaki objekt imas par metoda s kojima lako baratas.

A za rad u skupini programera bez OOP nema kruha.

Moj PC  
2 0 hvala 1
14 godina
odjavljen
offline
Arduino - projekti, ideje, savjeti, problemi

A ovo što si spominjao -> i pokazivač *

Kako bi to izgledalo?

 
0 0 hvala 0
15 godina
offline
Re: Arduino - projekti, ideje, savjeti, problemi
mbaksa kaže...

Prvi put čujem za to. Kak se to uključi/isključi?

 

U header staviš

 

#ifndef _HEADER_NAME_H
#define _HEADER_NAME_H

 

  class someClass{

   public:

     void someFunction();

  };


#endif

 

I sada ako kod kompajliranja se taj header includea više puta klasa će biti deklarirana samo jednom.

 

Ako compiler podržava može se i staviti samo "#pragma once" na početku headera umjesto ove cijele igre sa #define direktivom.

 

 

14 godina
odjavljen
offline
Re: Arduino - projekti, ideje, savjeti, problemi
Dex.pwn kaže...

A ovo što si spominjao -> i pokazivač *

Kako bi to izgledalo?

 

E da, još nešto.

Gledam ovaj tvoj primjer https://codeshare.io/29jvQ7

I nije mi jasno kako mikro kontroler zna dal treba prikazati ili sakriti ikonu? Nema nigdje parametra...

17 godina
moderator
online
Re: Arduino - projekti, ideje, savjeti, problemi
Alkaline kaže...
mbaksa kaže...

Prvi put čujem za to. Kak se to uključi/isključi?

 

U header staviš

...

I sada ako kod kompajliranja se taj header includea više puta klasa će biti deklarirana samo jednom.

 

Ako compiler podržava može se i staviti samo "#pragma once" na početku headera umjesto ove cijele igre sa #define direktivom.

Super, da, to je to. CronK3r - eto, klase i u Arduino IDE- mogu biti u svojim fajlovima! 

 

Dex.pwn kaže...

A ovo što si spominjao -> i pokazivač *

Kako bi to izgledalo?

Točno onako kako sam napisao - umjesto . ide -> kod korištenja. Naravno, varijablu tada treba i deklarirati kao pokazivač, te je treba dinamički alocirati objekt new.

 

Pogledaj si ovo, odnosno prvi odgovor.

 

Dex.pwn kaže...
Gledam ovaj tvoj primjer https://codeshare.io/29jvQ7

I nije mi jasno kako mikro kontroler zna dal treba prikazati ili sakriti ikonu? Nema nigdje parametra...

Kako nema? Što je atribut on?

 

14 godina
odjavljen
offline
Re: Arduino - projekti, ideje, savjeti, problemi

Da, ima on, ali u funkciji nema on, i nigdje ne diraš on, samo si ga definirao da je false...

Kako da ga promijenim na true?

17 godina
moderator
online
Re: Arduino - projekti, ideje, savjeti, problemi
Dex.pwn kaže...

Da, ima on, ali u funkciji nema on,

Kojoj funkciji?

 

Dex.pwn kaže...

i nigdje ne diraš on, samo si ga definirao da je false...

Pa nisi ga ni ti nigdje dirao u svom kodu ako se ne varam.

 

Dex.pwn kaže...

Kako da ga promijenim na true?

Npr:

ikone[iconHB].on = true;

 




14 godina
odjavljen
offline
Re: Arduino - projekti, ideje, savjeti, problemi

Hvala, još me zanima to što spominjete u postovima iznad.

Znači u header(.h) fajlu stavljam ove klase, i strukture klasa(ako sam dobro shvatio, taj "array" je struktura)?

 

Na ovo mislim

class icon
{
    public:
        uint8_t posY;
        char text[3];
        bool state;
        void changeState(bool state);
};

icon icons[4] = {
    { posY: SCR_ICONS_LI_Y, text: "PL" },
    { posY: SCR_ICONS_LI_Y, text: "LI" },
    { posY: SCR_ICONS_HB_Y, text: "HB" },
    { posY: SCR_ICONS_FL_Y, text: "FL" }
};

 

Inače sam on prebacio na funkciju koja pokazuje/sakriva, jer već imam varijable s kojima baratam.

Budem prvo napravio ovako, pa ću onda preć na * i -> jer na tom linku liku je sve A, B, malo mi je nejasno.

Doduše, to s -> mi je još i u PHPu nejasno, kako ide logika ovo ono :P

I pretpostavljam da se u tu "strukturu" mogu stavljati vrijednosti iz EEPROMa, tako da neke varijable mogu zamijeniti s ovima iz strukture.

Poruka je uređivana zadnji put sub 2.9.2017 21:31 (Dex.pwn).
17 godina
moderator
online
Re: Arduino - projekti, ideje, savjeti, problemi
Dex.pwn kaže...

Znači u header(.h) fajlu stavljam ove klase, i strukture klasa(ako sam dobro shvatio, taj "array" je struktura)?

Zaboravi sad na headere - drži sve u jednom fajlu, na početak - nemoj se sad još s tim opterećivati.

 

Dex.pwn kaže...

Na ovo mislim

class icon

Uoči da sam napisao class Icon. Praksa je da nazivi klasa počinju velikim početnim slovom, a objekti (instance klasa) malim.

 

Pa bi onda znači imao tipa:

class Icon...

 

I onda poslije:

 

Icon icon

 

Dex.pwn kaže...

class icon

{
    public:
        uint8_t posY;
        char text[3];
        bool state;
        void changeState(bool state);
};

Ako ćeš to tako raditi, onda komotno bool state možeš prebaciti u private: bool state, jer ti onda ne treba javni pristup tom članu (atributu).

 

Dex.pwn kaže...

icon icons[4] = {

    { posY: SCR_ICONS_LI_Y, text: "PL" },
    { posY: SCR_ICONS_LI_Y, text: "LI" },
    { posY: SCR_ICONS_HB_Y, text: "HB" },
    { posY: SCR_ICONS_FL_Y, text: "FL" }
};

Nemoj to raditi - umjesto 4 definiraj si konstantu. Tako da ako ti negdje poslije zatreba, da radiš s konstantom, a ne da onda na više mjesta mijenjaš brojku.

 

Dex.pwn kaže...

I pretpostavljam da se u tu "strukturu" mogu stavljati vrijednosti iz EEPROMa, tako da neke varijable mogu zamijeniti s ovima iz strukture.

AFAIK objekti se mogu zapisivati u EEPROM i iščitavati iz njega. Samo tu treba biti jako pažljiv - ako mijenjaš strukturu, redoslijed polja, a onda iz EEPROM-a pokušavaš u tu modificiranu klasu učitati stari objekt - ne bu dobro.

14 godina
odjavljen
offline
Re: Arduino - projekti, ideje, savjeti, problemi

Ja sam napisao icon, nisam znao da je takva praksa.

Budem kasnije definirao makro varijablu za tu četvorku.

 

Mislim da mi se ovo ne ispali radit, iz razloga jer nemam puno stvari za napravit u klasama i tim.

Ili možda ne vidim što sve može bit u objektima, klasama itd...

17 godina
moderator
online
Re: Arduino - projekti, ideje, savjeti, problemi
Dex.pwn kaže...

Mislim da mi se ovo ne ispali radit, iz razloga jer nemam puno stvari za napravit u klasama i tim.

Kako ti se ne isplati? Bolje ti je imati tri (a možda u budućnosti i više) polja s različitim podacima, umjesto jednog polja objekata? Zar ti program s tim nije kraći, pregledniji i lakši za proširivati u budućnosti?

14 godina
odjavljen
offline
Re: Arduino - projekti, ideje, savjeti, problemi

Naviko sam radit ovako, proceduralno.

Ak znaš šta je SAMP, na njemu sam naučio o Cu, skripte po 50+k linija, jedan fajl sve. Pa ti gledaj sad...

Navikneš se.. Nez iskreno.

15 godina
offline
Arduino - projekti, ideje, savjeti, problemi

Te skripte se rade sablonski.

 

Sto se tice pointera ajmo po redu:

 

Sto je pointer?

varijabla u koju se sprema adresa podatka na koji pokazuje.

Sto radi strelica?

Uzima podatak na koji pokazuje pointer i nakon toga stavlja .

 

Kod OOP je bolja praksa sve imati private i za postvljenje koristiti konstruktor, za dohvacivanje gettere, a za daljnju promenu varijabli settere.

Istina da je u ovom slucaju nepotrebno, ali kad ce biti bitno, tesko se je odviknut od losih navika.

Moj PC  
0 0 hvala 0
14 godina
odjavljen
offline
Re: Arduino - projekti, ideje, savjeti, problemi

Te skripte se isto rade ko i ovo, tj ovo se radi isto ko i skripte.

Imaš funkcije(kao što su ovdje digitalRead itd..), i logikom ih sklapaš.

Eventualno neki algoritam napravit za traženje nečega, kao i ovdje što se može...

Budem prolatio kroz neke tutorijale, al u ovom projektu ne vidim svrhu, osim eto za te četiri ikonice i eventualno za prikaz informacija kao što su kilometraža i to, al problem je taj što se neke informacije ne spremaju u jednu varijablu, već se računaju kod prikazivanja, a neke ne.

Poruka je uređivana zadnji put ned 3.9.2017 1:54 (Dex.pwn).
14 godina
odjavljen
offline
Arduino - projekti, ideje, savjeti, problemi

Odgledo ovo i prvi dio, malo shvatio koja je razlika između private i publica(što me i u PHPu muči) i kužim neke stvari.

jedino nisam siguran koliko treba mikro kontroleru da promijeni varijablu u objektu u interrupt funkciji.

 

 

 
0 0 hvala 0
17 godina
moderator
online
Re: Arduino - projekti, ideje, savjeti, problemi
Kažeš: "al problem je taj što se neke informacije ne spremaju u jednu varijablu, već se računaju kod prikazivanja, a neke ne."

Pa to je jedan od problema koji OOP rješava! Da nemaš izravan pristup varijablama ako ne treba, nego da ti objekt vrati odgovarajuću vrijednost (Cronk3r ti je spominjao getter), bilo da to bila vrijednost konkretne varijable ili da je to neka proračunata vrijednost. Razmišljaš totalno kontra od onog kako stvarno jest!
15 godina
offline
Arduino - projekti, ideje, savjeti, problemi

I gledanje videa na pojedinu temu nicemu ne vodi ako nisi prije vec temeljito prosao jezik, ako hoces nesto nauciti onda ides po redu i sve ucis, a kasnije ako zaboravis se mozes na taj nacin prisjetiti.

Mozda ti dosta stvari znas, ali ti fale neke sitnice koje napomenu usput u videu.

Moj PC  
0 0 hvala 0
17 godina
moderator
online
Re: Arduino - projekti, ideje, savjeti, problemi
Glavni problem je što je ponovno krenuo raditi ono što je radio na temi o elektronici - ima vrlo malo znanja o temi o kojoj se vodi rasprava, ali ga to nimalo ne sprečava da sumnja u ono što mu savjetujemo. To već "polako" počinje ići na živce. Ako se netko ne kuži u OOP, onda stvarno ne bi trebao pričati što s tim ne valja, nego bi trebao slušati što mu kažu oni koji se kuže. Ako se odlučio na proceduralno programiranje onda to stvarno ne bi trebao braniti pisanjem besmislica o OOP-u.
14 godina
odjavljen
offline
Re: Arduino - projekti, ideje, savjeti, problemi
CroNk3r kaže...

I gledanje videa na pojedinu temu nicemu ne vodi ako nisi prije vec temeljito prosao jezik, ako hoces nesto nauciti onda ides po redu i sve ucis, a kasnije ako zaboravis se mozes na taj nacin prisjetiti.

Mozda ti dosta stvari znas, ali ti fale neke sitnice koje napomenu usput u videu.

 

Zašto ne vodi ničemu? Više mi paše kad vidim neki primjer, i onda ga sam proučavam, nego kad mi netko objašnjava samo preko teksta.

Jer iskreno nisam vas baš previše skužio, osim onog primjera što je Baksa stavio... Budem neke stvari prebacio u OOP pa postavim ovdje, al mislim da sam sve shvatio u videu(nije da vas ne slušam, al na primjeru vidim neke stvari koje ne kužim u tekstu).

 

Dakle imamo klasu koja je zapravo nacrt(blueprint) objekta. U klasi imamo public i private, stvari koje su u publicu mogu se koristiti svuda, a stvari u privateu mogu se koristiti samo u toj klasi.

Kreiranje objekta ide ime klase ime objekta(parametri);

parametri ne moraju bit, onda se koristi default konstruktor koji postavlja informacije na default vrijednosti.

S tim bi ja mogao varijable/podatke za kilometražu držati u jednom objektu, podatke o maksimalnim brzinama u drugom objektu.

I iskreno ne kužim Baksu zašto je rekao da ste stavljam u jedan file. Ovako je dosta urednije.

Poruka je uređivana zadnji put ned 3.9.2017 12:29 (Dex.pwn).
14 godina
odjavljen
offline
Arduino - projekti, ideje, savjeti, problemi

error: 'uint32_t' does not name a type dobivam cijelo vrijeme. A kad upišem unsigned long onda je sve ok. A koliko vidim i drugi koriste u klasama uint32_t

 

Također:

Distance.cpp:6:29: error: 'uint8_t' was not declared in this scope

Distance.cpp:6:43: error: expected ',' or ';' before 'const'

https://pastebin.com/24NTLwK4

 

 

U glavni .ino fajl je #include "Header\Distance.h"

Sve kao u videu iznad.

Također, ako parametar uint8_t type izbacim, kao i const pored funkcije i uint32_t zamijenim s unsigned long, sve radi super.

 

 

 

https://stackoverflow.com/questions/11069108/uint32-t-does-not-name-a-type

 

Sve pod kontrolom haha 

Poruka je uređivana zadnji put ned 3.9.2017 19:25 (Dex.pwn).
 
0 0 hvala 0
Ova tema je sadržajno povezana sa sljedećim temama: Uvod u elektrotehniku (istosmjerna struja)
Nova poruka
E-mail:
Lozinka:
 
vrh stranice