Arduino - projekti, ideje, savjeti, problemi izdvojena tema

poruka: 1.365
|
čitano: 386.783
|
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)
16 godina
moderator
online
Re: Arduino - projekti, ideje, savjeti, problemi
CroNk3r kaže...
Najbolje rjesenje je koristiti gotove stringove koje upisjuemo na ekran, a ne komadic po komadic jer u tom slucaju zna doci do smetnja.

Dobar prijedlog. Arduino ima malo drugačiju sintaksu - ovo tvoje sam otprilike prepisao u Arduino:

 

void loop() {
// put your main code here, to run repeatedly:

String prviRed = "";
String drugiRed = ""; //i tako do kolko redova ima

/////////////////////////
//Ucitavanje temperatura
////////////////////////

prviRed = "Temperatura: ";
prviRed.concat(121);
prviRed.concat((char)223); // znak za stupanj (°)
prviRed.concat("C");

for (int i = prviRed.length(); i <= 18; i++) { // dodavanje razmaka do kraja reda lcd, 18 je broj znakova u redu lcd-a
  prviRed.concat(" ");
}

Serial.println(prviRed);
lcd.print(prviRed);
}

 

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

neznam tocno dal u arduinu radi, ali znam i da c i java imaju jos metodu upravljanja stringovima na nacin:

 

String type = "Dovod";

int temperatura = 100;

lcd.println("%10s : %3d%sC", type,temperatura,char(broj za stupanj));

 

Druga stvar usput za one koji se planiraju u buducnosti baviti programiranjem, dobra praksa je ne koristiti "magic numbers", a to je npr u onom mom foru koji sam prije napisao

Jer u slucaju izmjena lcd-a na 20x4 samo na pocetku proomjenite ta 2 broja i dalje nista nije potrebno, ista stvar za sve sta bi se tokom unaprjedenja uredaja moglo hardverski ili softverski promjeniti sve se definira na taj nacin.

To iako se najvjerojatnije nece nikad mjenjati forsirajte u bilo kojem programu da bi izbjegli neugodnosti kad krenete programirati za poslovne svrhe, prva stvar koja ce vam se dogoditi je da se necete sjecati di je sta u vecim kodovima, a druga da ce biti potrebno traziti po kodu sve potrebne izmjene.

 

#define LCD_WIDTH 18

#define LCD_HEIGHT 2

void setup{

  lcd.begin(LCD_WIDTH, LCD_HEIGHT)

}

 

 

 

for (int i = prviRed.length(); i <= LCD_WIDTH; i++) { // dodavanje razmaka do kraja reda lcd, 18 je broj znakova u redu lcd-a
  prviRed.concat(" ");
}

:D
Moj PC  
0 0 hvala 0
8 godina
neaktivan
offline
Arduino - projekti, ideje, savjeti, problemi

Ponio sam aparaturu na posao pa cemo se poigrat,prvo cu probat kod od mbakse pa onda ovo ostalo,ili ako nebi bilo tesko da neko skompletira pa da c/p napravitm,gle ovaj kod sam ja uzeo s neta i prepravio na ovaj ekran i jos jedan dio coda je iz mbaksovog akvarija :D posto sam fkt tudum i tek sam nedavno C vidio u zivotu,logicki dodem do zakljucka koji je kod za sta ali neznam koja je alternativa tom kodu.Od komponenti imam arduino UNO s ebaya ,kablice neke losije koji su muski muski s ebaya,neke malo kvalitetnije koji su musko zenski s aliexpresa :P Nebitno koji ducani ali ocu rec ovi s aliexpresa su mi se cinili kvalitetni jer su kockasti pinovi dok su ovi s ebaya okrugli,ma neznam sve mi se nekako to klimavo drzi na bredboardu zato i sumnjam na konekciju ali moguče da je i u kodu problem,poigram se danas pa javim ishod decki puno pomažete nama početnicima i jedno veliko HVALA :) 

 
0 0 hvala 0
14 godina
offline
Arduino - projekti, ideje, savjeti, problemi

Koji breadboard imas?

Bitna stvar kod breadboarda je da imas barem 2 komada i 1 koristis za chipove, otpornike, kondenzatore i max diode po pitanju veclicine nozica, a drugi koristis za regulatore napona, tranzistore(TO220 pakovanje) i sl.

Moj prvi breadboard je gubio kontakt upravo zbog toga jer nakon sto par puta stekas u njega vece pinove, pocinje gubiti kontakt s manjim zicama.

Tako da sad koristim taj za vece komponente, a ostale za klasicne.

:D
Moj PC  
0 0 hvala 0
8 godina
neaktivan
offline
Arduino - projekti, ideje, savjeti, problemi

Imam neki jeftini bredboard,sad je proadilo s mbaksinim kodom ali mi povrat nije u novom redu i mbaksa je dodao float tempOdvod = sensors.getTempC(Odvod); :D :D umijesto odvod treba biti povrat :D hahah uglavnom izleda je do zica isto bilo par zica sam promijenio i radi cak na moj kod.

 

I još jedna se greška potkrala mbaksi linija 64 lcd.println(" C"); treba bit lcd.print(" C"); jer kad je ovaj in nakon C još neka 2 znaka baca koja su necitljiva. Ulavnom Mbaksin kod radi tako da se s drugim nisam ni zafrkavao makar bi valjalo probat,jer ne razumijem ovaj string tj kako bi taj string trebao nazvat i sta ubacit u njega?

 

evo koda od Mbakse prepravljenog koji radi,ali stvar je svakako u zicama bila jer i moj kod radi ali ste rekli da nepotrebno dva puta trazio temperaturu.

 

https://codeshare.io/qNLDZ

 

 

Opet sam zapeo htio bi da uzmem od oba senzora temperaturu i da ako je temp na bilo kojem senzoru veca od 80 da okida reley s jednim senzorom sam to bio riješio i kod ima na devetoj stranici ali s dva se evo zafrkavam.

 

EDIT:

Evo relay je stavljen da je pin7 i stavio da sam da je output.Evo kod di ubacit i sta da cita obje temperature i da okida reley ja 80,ako bi bilo komplicirano sa 2 senzora onda da cita dovod.

 

https://codeshare.io/CCGD5

Poruka je uređivana zadnji put čet 28.4.2016 15:34 (gogo2409).
 
0 0 hvala 0
14 godina
offline
Arduino - projekti, ideje, savjeti, problemi

Ja imam 1x http://www.ebay.com/itm/SYB-120-PCB-Bread-Board-60x12-Test-Develop-DIY-700-Point-Solderless-PCB-/201414925351?hash=item2ee543dc27:g:CL8AAMXQVERS-xyR

i dosta koada ovog: http://www.ebay.com/itm/Solderless-MB-102-MB102-Breadboard-830-Tie-Point-PCB-BreadBoard-For-Arduino-/381374751998?hash=item58cbb4e4fe:g:2yUAAOSwEetV~Qi1

ovaj 1 mi sluzi za vece komponente, a ostali za finije stvari, imam tih s drugog linka 5 komada zajedno povezanih i samim i zaljepljenih na plocu tako da kod vecih projekta nemam problema s time da kad 1 breadboarda pomakne ostale vucem sa zicama i samim time unistim zice.

Sta se tice zica, u pocetku sam koristio s ebaya one s gotovim zavrsetcima(http://www.ebay.com/itm/MB-102-830-Point-Solderless-PCB-Breadboard-Power-Supply-65pcs-Jump-Cable-Wires-/400570474085?hash=item5d43dc5e65:g:sFcAAOSwGYVXBiOL ko u ovom setu), ali sam odustao od njih jer kad spojim sve je nepregledno i jako puno zica ide svugdje i nemoguce se je snalazti.

Boje rjesenje po meni je koristiti manje zice(http://www.banggood.com/400Pcs-6cm-Breadboard-Jumper-Cable-Electronic-Wires-Black-Red-Colour-p-949895.html) Ja koristim ove navedene i izrezem ih tocno na duljinu kolko mi treba. Ako su mi prekratke onda uzmem ove prve.

 

 

Ovo sa stringovima:

String ti je varijabla koja pohranjuje znakove abecede(po ascii standardu) i kad koristis string i upisujes neki broj, njega nije moguce zbrajati nego je on upisan u obliku simbola.

E sad onaj bitniji dio, prvo inicijaliziras string:

String str = "";

to je prazna varijabla str koja ne sadrzi nikakav podatak, u nju dodajes podatke tako da korstis naredbu:

str.concat("tekst");

str.concat(varijabla);

str.concat(varijabla.toString);

Znaci u string se dodaje ono sto je unutar zagrada. Ukoliko zelis dodati neku drugu varijablu pises samo ime varijable, a ako se radi o tekstu onda pises pod navodnicima.

Sad neznam dal je kod arduina potrebno raditi konverziju integera i floata u string varijablu ili se samo napise varijabla u zagradu.(ako nece raditi samo nakon varijable napises .toString)

I kad napravis cijeli string onda ga jednostavno obrises lcd i nakon toga odmah ubacis nove podatke.

lcd.clear

lcd.println(str);

lcd.println(str2);

 

:D
Moj PC  
0 0 hvala 0
16 godina
moderator
online
Re: Arduino - projekti, ideje, savjeti, problemi
gogo2409 kaže...

Imam neki jeftini bredboard,sad je proadilo s mbaksinim kodom ali mi povrat nije u novom redu

...

I još jedna se greška potkrala mbaksi linija 64 lcd.println(" C"); treba bit lcd.print(" C"); jer kad je ovaj in nakon C još neka 2 znaka baca koja su necitljiva.

Println sad ispada greška samo zato jer izgleda da ta funkcija nije implenetirana za LCD, što nisam znao. Znači, kao što si i sam utvrdio, println za LCD ne radi (za Serial i OLED radi), pa onda treba ručno pozicionirati kursor. Bar što se tiče standardne, defaultne LCD biblioteke.

 

gogo2409 kaže...

Opet sam zapeo htio bi da uzmem od oba senzora temperaturu i da ako je temp na bilo kojem senzoru veca od 80 da okida reley s jednim senzorom sam to bio riješio i kod ima na devetoj stranici ali s dva se evo zafrkavam.

 

EDIT:

Evo relay je stavljen da je pin7 i stavio da sam da je output.Evo kod di ubacit i sta da cita obje temperature i da okida reley ja 80,ako bi bilo komplicirano sa 2 senzora onda da cita dovod.

 

https://codeshare.io/CCGD5

Ne znam jesam li te dobro shvatio, ako jesam onda si pogledaj liniju 57 i 58:

 

const byte maxTemp = 80;
digitalWrite(relay, !((tempDovod > maxTemp) || (tempPovrat > maxTemp)));

 

Znači, ako je tempDovod ili tempProvrat > 80, na pin od releya poslat će se signal suprotni od true, a to je LOW. U suprotnom poslat će se true (HIGH). Ako treba biti suprotno, samo makneš uskličnik.

8 godina
neaktivan
offline
Arduino - projekti, ideje, savjeti, problemi

mbaksa kod radi savršeno:)

 
0 0 hvala 0
16 godina
moderator
online
Re: Arduino - projekti, ideje, savjeti, problemi
gogo2409 kaže...

mbaksa kod radi savršeno:)

Što si drugo očekivao? 

8 godina
neaktivan
offline
Arduino - projekti, ideje, savjeti, problemi

Nisam niti sumnjo :) Hvala svima s ovime bi moj projekt za sad trebao bit kompletan,još samo čekam pretvarač sa 6-20V na 5V,dok ne krenem u novi,sto ce po svemu sudeci biti uskoro :)

Vjerojatno cu sad naručit nano i još pokoju komponentu pa se igrat,kad ovo skompletiram u kutiju poslikat cu i napisat koju riječ.

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

Nisam niti sumnjo :) Hvala svima s ovime bi moj projekt za sad trebao bit kompletan,još samo čekam pretvarač sa 6-20V na 5V,dok ne krenem u novi,sto ce po svemu sudeci biti uskoro :)

Vjerojatno cu sad naručit nano i još pokoju komponentu pa se igrat,kad ovo skompletiram u kutiju poslikat cu i napisat koju riječ.

U pravilu nemas sto uciti za nano, to je UNO u manjem pakovanju.

Preporuka za pricvrscivanje plocica u kutijama od mene ti je vruce ljepilo, lako je za koristiti, brzo, a ako zelis maknuti, samo malo jace povuces.(na kuteve stavis ljepilo jer ako je na sredini, zna se desiti da neke tiskane plocice velikih dimenzija pucaju, al su to plocice velicine moderne graficke kartice, tako da s ovim modulima nemas problema)

:D
7 godina
neaktivan
offline
Re: Arduino - projekti, ideje, savjeti, problemi
A da pokušaš sa starim mobitelom umjesto GSM modula i mikroprocesorom za upravljanje mobitelom.
7 godina
neaktivan
offline
Arduino - projekti, ideje, savjeti, problemi

Pozdrav,

 

novi samo ovdje a vidim da se razumijete u Arduino programiranje i te stvari pa ako bi i meni mogli pomoći oko projekta na kojem trenutno radim. Naime radi se o alarmnom sustavu kontroliranom preko Arduino Mega2560 koji sadrži 2 pir detektora, 2 magnetna detektora, lcd, numeričku tipkovnicu i ostale manje bitne stvari da ne duljim i nabrajam. Sustav radi na princip da unosom lozinke alarm se aktivira i ukoliko dođe do detekcije na nekom od senzora ili kontakta sustav je uključuje  i daje zvučnu i svjetlosnu signalizaciju također na lcdu ispisuje koji je trentno detektor aktivan, ponovnim unosom lozinke sustav se isključuje te se vraća na početni zaslon. E ja bi sad želio da mi se nakon toga unosa lozinke(deaktivacije) na lcdu ispiše koje su zone bili aktivirane(koji detektor je bo aktivan). Znači uspio sam samo da mi ispisuje onu zonu koja je zadnja bila aktivna dok preostale kao da se nisu dogodile. Mene sad zanima dal bi on to nekako mogao "zapamtiti" koji je detektor bio aktiviran pa prema tome da dalje napravim realizaciju. Hvala unaprijed na bilo kakvoj pomoći i ispričavam se na dugom postu.

 
0 0 hvala 0
13 godina
offline
Re: Arduino - projekti, ideje, savjeti, problemi

 Mislim da bi se to moglo rješit preko struktura da nemoraš koristit zasebnu varijablu za svaki detektor. Googlaj si malo C structures

Ono što možeš sutra,ne ostavljaj za danas.
Poruka je uređivana zadnji put sub 7.5.2016 12:59 (zelenbic).
7 godina
neaktivan
offline
Re: Arduino - projekti, ideje, savjeti, problemi

Hvala, probat ću nekako pokušati sa strukturama

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

Jedna opcija ti je koristiti linked list.

To je dobra opcija jer je dinamicka struktura podataka(nema odredenu duljinu) i u tvom slucaju je idealno.

Druga opcija ti je puno jednostavnija, a to je da slozis obicno polje u koje bi se spremao kod/ime senzora koji je aktiviran.

Duljinu polja stavis da je jednaka ko ukupan broj senzora.

 

Ja bi isao na polje jer jos jedna stvar je da liste imaju malo vece opterecenje za procesor.(iako nista strasno)

 

Ukoliko se odlucis za linked list

taj i sljedecih par videa su odlicni

:D
Moj PC  
0 0 hvala 0
7 godina
neaktivan
offline
Re: Arduino - projekti, ideje, savjeti, problemi

e hvala ti puno, probat ću s poljima to mi zvuči jednostavnije a i sam si rekao da je, mada ću pogledati i linked list da znam za ubuduće kako funkcionira.

Znači vezano za polja recimo imam 4 senzora i napravim polje [4] i sad svaki senzor pod određenim imenom spremam u to polje? Ako ti nije problem da mi daš primjer da malo bolje skužim logiku kako bi to koristio konkretno 

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

Moze mala pomoc... Malo guglam ali nisam nasao rijesenje.

 

Kako u Arduinu napraviti Library, odnosno klasu koja ce kao membere imati druge klase.

 

Npr 

 

class Switch
{
  public:
    Switch(int pin);
    int readState();
  private:
  int _pin;
};

 

class LCD
{
  public:
    LCD(int pinovi);
    void displayText(String text);
  private:
    int _pinovi;
};

 

class Machine()

{
  public:
   Machine();

   Switch onSwitch;

   Switch doSomethingOther();

   LCD errorConsole();

  private:

}

 

Znam da kod nije tocan, ali nebitno, samo sam htio dati primjer sto zelim.

 

Znaci zelim library u kojem cu definirati sve elemente koje imam, i onda za svaki switch, rotary, lcd i slicno kreirati objekt u tom libraryu, odnosno glavnoj klasi... Zelim da to bude po pravilima OOP-a i da se kasnije mogu lakse snaci i da mogu lakse manageati kod.

 

Kako to nrparaviti?

 

Da li u konstruktoru Machine objekta inicijaliziram sve ove objekte tipa Switch, LCD i slično ili kako? Jel ovo ista priča sa OOP-om u C++ ili arduino to hendla na svoj neki način?

 

U ovom projektu mislim imati preko 30-40 switcheva, 10-ak LCD-ova, desetak rotarya, desetak LED indikatora i slično...

Rvat katolik!
Poruka je uređivana zadnji put sri 11.5.2016 19:14 (tnakir).
 
0 0 hvala 0
16 godina
moderator
online
Re: Arduino - projekti, ideje, savjeti, problemi

Nisam se s tim zabavljao. Možda ti ovo ili ovo ili ovo pomogne.

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

Gledao san to, nije to to. Morat cu malo ponovit cpp, odavno ga nisam kucao. C# to jednostavnije rijesava.

Rvat katolik!
 
0 0 hvala 0
16 godina
moderator
online
Re: Arduino - projekti, ideje, savjeti, problemi
tnakir kaže...

Gledao san to, nije to to. Morat cu malo ponovit cpp, odavno ga nisam kucao. C# to jednostavnije rijesava.

Arduino je okljaštrenja, prilagođena verzija C++-a, tako da ne očekuj da ćeš to moći napraviti na isti način kao u C++-u. Pogledaj si ovo.

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

Nije to to...

Rvat katolik!
 
0 0 hvala 0
16 godina
moderator
online
Re: Arduino - projekti, ideje, savjeti, problemi
tnakir kaže...

Nije to to...

Koliko se da vidjeti prema linkovima koje sam nabacio, bojim se da "to" za tvoje želje/potrebe ne postoji i da ćeš to morati riješiti na drugi način. Na kraju krajeva, ipak je u osnovi riječ o mikrokontroleru vrlo ograničenih kapaciteta, a ne o mikroprocesorskom računalu.

 

EDIT:

Hm... Ne znam kamo sam gledao kad sam kucao kod... Čini se da se objekti mogu smjestiti u klasu putem pokazivača. Npr.:

 

#include <LiquidCrystal.h>

class Test {
public:
  Test();
  LiquidCrystal* lcd;
};

Test::Test() {
  lcd = new LiquidCrystal(12, 11, 5, 4, 3, 2);
};

 

Poruka je uređivana zadnji put sri 11.5.2016 22:33 (mbaksa).
14 godina
offline
Arduino - projekti, ideje, savjeti, problemi

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

Nije to to...

Koliko se da vidjeti prema linkovima koje sam nabacio, bojim se da "to" za tvoje želje/potrebe ne postoji i da ćeš to morati riješiti na drugi način. Na kraju krajeva, ipak je u osnovi riječ o mikrokontroleru vrlo ograničenih kapaciteta, a ne o mikroprocesorskom računalu.

 

EDIT:

Hm... Ne znam kamo sam gledao kad sam kucao kod... Čini se da se objekti mogu smjestiti u klasu putem pokazivača. Npr.:

 

#include <LiquidCrystal.h>

class Test {
public:
  Test();
  LiquidCrystal* lcd;
};

Test::Test() {
  lcd = new LiquidCrystal(12, 11, 5, 4, 3, 2);
};

 

 E to je to. Znaci ide priko pokazivaca i moze se. Zrlim napraviti managable code jer cu dodavati jos elemenata, mozda jos koji arduino...

Rvat katolik!
8 godina
odjavljen
offline
Arduino - projekti, ideje, savjeti, problemi

Tnakir, pogledaj si organizaciju koda u firmwareu za 3D printere: https://github.com/MarlinFirmware/Marlin

 

 

 
0 0 hvala 0
12 godina
neaktivan
offline
Re: Arduino - projekti, ideje, savjeti, problemi
tnakir kaže...

Moze mala pomoc... Malo guglam ali nisam nasao rijesenje.

 

Kako u Arduinu napraviti Library, odnosno klasu koja ce kao membere imati druge klase.

 

Npr 

 

class Switch
{
  public:
    Switch(int pin);
    int readState();
  private:
  int _pin;
};

 

class LCD
{
  public:
    LCD(int pinovi);
    void displayText(String text);
  private:
    int _pinovi;
};

 

class Machine()

{
  public:
   Machine();

   Switch onSwitch;

   Switch doSomethingOther();

   LCD errorConsole();

  private:

}

 

Znam da kod nije tocan, ali nebitno, samo sam htio dati primjer sto zelim.

 

Znaci zelim library u kojem cu definirati sve elemente koje imam, i onda za svaki switch, rotary, lcd i slicno kreirati objekt u tom libraryu, odnosno glavnoj klasi... Zelim da to bude po pravilima OOP-a i da se kasnije mogu lakse snaci i da mogu lakse manageati kod.

 

Kako to nrparaviti?

 

Da li u konstruktoru Machine objekta inicijaliziram sve ove objekte tipa Switch, LCD i slično ili kako? Jel ovo ista priča sa OOP-om u C++ ili arduino to hendla na svoj neki način?

 

U ovom projektu mislim imati preko 30-40 switcheva, 10-ak LCD-ova, desetak rotarya, desetak LED indikatora i slično...

 

Ne trebaju ti nikakvi pointeri tu. Ono što želiš bi se izvelo tako da unutar svakog .h fajla uključiš druge fajlove, npr:

 

 

class Switch
{
  public:
    Switch(int pin);
    int readState();
  private:
  int _pin;
};

 

class LCD
{
  public:
    LCD(int pinovi);
    void displayText(String text);
  private:
    int _pinovi;
};

 

#include "Switch.h"

#include "LCD.h"

 

class Machine()

{
  public:
   Machine();

   Switch onSwitch;

   Switch doSomethingOther();

   LCD errorConsole();

  private:

}

 

Nemoj fajlove stavljati unutar foldera libraries nego tamo di je i .ino file. Ako misliš raditi s projektom koji ima više fajlova, skini si Visual ili Atmel Studio s Visual Micro pluginom tako da možeš raditi u pravom IDE-u.

 

Možeš vidjeti kako sam ja fajlove organizirao u svom projektu:

https://github.com/paradajz/OpenDeck/tree/master/src/firmware/OpenDeck_MCU

 

Poruka je uređivana zadnji put pon 16.5.2016 14:27 (paradajz).
15 godina
offline
Arduino - projekti, ideje, savjeti, problemi

Hvala na pomoći, poigrat ću se malo kad uhvatim vremena.

 

Slobodno te cimnem na PM ako mi bude trebala dodatna pomoć?

Rvat katolik!
 
0 0 hvala 0
8 godina
neaktivan
offline
Arduino - projekti, ideje, savjeti, problemi

jeli ima neki korisni tutoriali na hrvatskom jeziku za Arduino

 
0 0 hvala 0
11 godina
neaktivan
offline
Arduino - projekti, ideje, savjeti, problemi

Koja je razilika orginalnog arduina (uno) i onog sa ch340g jel ima neko prblema sa ovim sto imajau ch340g ?

 
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