Arduino - projekti, ideje, savjeti, problemi izdvojena tema

poruka: 1.266
|
čitano: 213.949
|
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)
12 mjeseci
neaktivan
offline
Arduino - projekti, ideje, savjeti, problemi

Zamolio bih poznavatelje programiranja Arduino aplikacije da pogledaju ovaj Sketch i upute me gdje griješim. Naime želio bih napraviti napravu kojom bih mogao raditi slijedeće. Kad se preko tastature unese neki broj, isti je vidljiv na LCD-u. Kad se pritisne tipka 1,stepper motor napravi koraka koliko je određeno naredbom myStepper.step Unesena vrijednost mora ostati spremljena u EEPROM. Trenutno nije bitno da se kontra smijer upravlja sa vrijednostima sa tastature. Kontra smijer se može postavit programski i uvijek je isti.

(imajte u vidu da sam ja skoro šezdesetgodišnjak i da mnoge stvari mi nisu baš sjele).

 

platforma je ARDUINO UNO V.3

 

// program za pokretanje step motora napred nazad
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
#include <Stepper.h> //including stepper motor library
#include <EEPROM.h>

int button1Pin = A0; // (u ovoj verziji koda koristi se analogni ulaz kao digitalni)
int button2Pin = A1; // (u ovoj verziji koda koristi se analogni ulaz kao digitalni)
int stepIN1Pin = 10;
int stepIN2Pin = 13;
int stepIN3Pin = 12;
int stepIN4Pin = 11;
int stepsPerRevolution = 2060; // amount of steps per revolution

//char password[4];
char dist[4];
int j=0;
char customKey=0;

 

const byte ROWS = 4;
const byte COLS = 4;

char hexaKeys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {9, 8, 7, 6};
byte colPins[COLS] = {5, 4, 3, 2};
Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
LiquidCrystal_I2C lcd(0x27, 16, 2);
Stepper myStepper(stepsPerRevolution, stepIN2Pin, stepIN4Pin, stepIN3Pin, stepIN1Pin);
void setup(){
pinMode(button1Pin, INPUT);
pinMode(button2Pin, INPUT);
myStepper.setSpeed(15);
lcd.backlight();
lcd.init();
}
void loop(){
char customKey = customKeypad.getKey();
if (customKey){

//lcd.clear();
lcd.setCursor(0,0);
// lcd.print(customKey);
for(int j=0;j<4;j++)
EEPROM.write(j,customKey);
for(int j=0;j<4;j++)

dist[j]=EEPROM.read(j);
//j=EEPROM.read(j);

lcd.print( dist[j]);
}
{
int button1State, button2State;
button1State = digitalRead(button1Pin);
button2State = digitalRead(button2Pin);
// for(int j=0;j<4;j++)
// dist[j]=EEPROM.read(j);
// lcd.clear();

// lcd.print( dist[j]);

if (((button1State == LOW) && !(button2State == LOW))) // if we're pushing button 1 OR button 2
myStepper.step(-stepsPerRevolution* dist[j]);  // ova naredba ne radi motor se uvijek vrti 10 revolucija bez obzira na vrijednost tastature
// myStepper.step(stepsPerRevolution*2);     // ova naredba radi ali ne očitava vrijednost sa tastature
if (((button2State == LOW) && !(button1State == LOW))) // if we're pushing button 1 OR button 2
myStepper.step(-stepsPerRevolution/2);



}
}

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

Neke stvari mi nisu jasne:

sa funkcijom 

char customKey = customKeypad.getKey();

dobiješ vrijednost tastature, koja je char (veličina 8 bitova=1 byte)

a funkcija EEPROM.write(j,customKey);

to zapiše na 4 mjesta u eeprom? zašto?

i onda opet to sve poročitaš i zapišeš u polje dist[j]=EEPROM.read(j);

 

i onda zavrtiš motor naredbom 

myStepper.step(-stepsPerRevolution* dist[j]);?

pitanje je koja je vrijednost tu dist[j]? vrijednost varijable "j" ti je j u tom trenutku 4 i na polju dist[4] nemaš ništa zapisano.

probaj stavit fiksno dist[0], znači vrijednost koja je zapisana na prvu adresu u EEPROM-u. ili stavi j=0; nakon što pročitaš stanje tipkala.

i mislim da imaš višak zagrada (linija 60 i 78)

 

Pozdrav!

12 mjeseci
neaktivan
offline
Re: Arduino - projekti, ideje, savjeti, problemi

Ma nisam ja programer. Ovo sam skalupio od nekoliko primjera koje sam pronašao na internetu i kombinacijom određenih naredbi probao napravit program koji bi mi nakon pritiska na tipku pomknuo radnu traku za onoliko mm koliko napišem pomoću tastature. Zapeo sam na ovom dijelu gdje je trebalo pročitat vrijednost u memoriji i tu vrijednost ubacit u naredbu

 

 

myStepper.step(-stepsPerRevolution* dist[j]);

 

pokušao sam na par načina ali nisam uspio. Probat ću kasnije napravit ove preinake pa javim što sam dobio. inaće cijela ideja je na skici.

 

Meni bi ustvari trebalo da ja mogu upisat neku vrijednost i recimo stisnem tipku "A" i to se umemorira. Dlje je postupak kao što sam gore napisao, ali nisam uspio dobit dvocifrenu ili trocifrenu vrijednost  upisa preko keypad-a već mi svaki put  prikaže samo jednocifreni broj. Znaći imam dosta problema (zbog mog neznanja) ali pokušavam riješiti dio po dio. Kao što rekoh stariji sam čovjek i nisam vičan programiranju ali eto pokušavam naučit nešto novijega osim tranzistora i elktronskih cijevi.

 

Poruka je uređivana zadnji put sri 11.9.2019 10:52 (hrmnk).
8 godina
offline
Re: Arduino - projekti, ideje, savjeti, problemi

Ajmo prvo definirati šta upisujemo preko tastature? samo brojeve?

koji je raspon tih brojeva? Da li nakon unosa na tipkovnici imaš potvrdu unosa (nekakav oblik enter tipke)?

 

 

12 mjeseci
neaktivan
offline
Re: Arduino - projekti, ideje, savjeti, problemi

Da recimo želim da se traka pomakne 50 mm upišem 50 i svaki put kad stisnem tipku motor se pomakne za taj iznos. znači u samom kodu treba postojati naredba koja će taj broj pretvorit u broj koraka motora. Broj koraka po punom okretu motora je poznat, Opseg kruga valjka koji pokreće traku isto je poznat. mislim poznat . Za sad je to samo imaginarna vrijednost ali recimo ti parametri se postave na neku stvarnu vrijednost i ne mijenjaju se. Osim same dužine pomaka. Za to mi je dovoljna trocifrena vrijednost dužine koju sam upisujem preko tastature. U stvari to je i jedini parametar koji mora biti promjenjiv. Bilo bi super kad bi se ta upisana vrijednost dala memorirati i po potrebi mijenjati. 

 

Npr.

 

235 utipkam na tastaturi pa recimo "A" i to je spremljeno. Kad pritisnem taster motor napravi koraka taman toliko da se transportna traka pomakne za 235mm, ili neku drugu vrijednost koja je napisana preko tastature. Znači imam mogučnost beskonačnog ponavljanja postupka svaki put kad pritisnem tipkalo a da prije toga ne moram ponovno upisivati recimo ovih 235 ili slično. znaći upisujem od 1 do 999 ili 001 do 999 već kako to programski mora biti . sada recimo želim promjeniti vrijednost. Pritisnem npr "#" i upišem novu vrijednost, recimo 025 ili 25 stisnem "A" i ta nova vrijednost je aktivna sve do ponovne promjene. Recimo takav nekakav način rada step motora. Druga tipka se koristi za kontra smjer vrtnje i nije uvjetovana nikakvim upisivanjima. tj. kad je držim stisnutu motor se vrti kontra sve dok ju ne otpustim.

 

Konkretno u mom slućaju motor treba 2060 koraka za jedan okretaj. Recimo da je opseg valjka i trake 100mm (50mm za pola kruga), kad upišem preko tastature 50, motor treba napraviti 1030 koraka.

Poruka je uređivana zadnji put sri 11.9.2019 14:31 (hrmnk).
8 godina
offline
Re: Arduino - projekti, ideje, savjeti, problemi

Evo novi kod koji nije testiran, ali u teoriji bi trebao funkcionirati.

Definicije pinova i LCD-a nisam ništa dirao.

Ono što sam uveo je prilikom setup-a da pročita zadnju spremljenu vrijednost u eeprom-u i da bude spreman za rad. moglo bi biti problema prilikom prvog paljena, jer neznam koje su mu default vrijednostu u eeprom-u.

dodao sam i prepoznavanje tipki za unos i potvrdu unosa.

program čeka unos tipke i kad se unese "#" ulazi u programobilni mod (ispisuje na lcdu ""enter dist:", te u donjem redu ispisuje tipke koje se kasnije unose.

daljnim unosom znamenki svaka se zapisuje u polje "digits []" sve dok se na tipkovnici ne pritisne "A".

kada se pritisne "A", unešene znamenke se spremaju u eeprom, svaka znamenka na svoju poziciju (to bi se moglo i bolje riješiti) i generira se varijabla "distance" koja će iz unešenih znamenki napraviti broj koji je od 0-999.

nakon toga pritiskom na tipkala okreces traku. jedino što ces ti ubaciti korekcijski faktor u kod tako da brojeve od 0-999 konvertiraš u centimetre.

 

myStepper.step(-stepsPerRevolution* distance*"korekcijski_faktor");

 

 

Molim ekipu na forumu, ako ima kakvih primjedbi i sugestija nek se slobodno uključe u problematiku.

 

 

 

 

// program za pokretanje step motora napred nazad
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
#include <Stepper.h> //including stepper motor library
#include <EEPROM.h>

int button1Pin = A0; // (u ovoj verziji koda koristi se analogni ulaz kao digitalni)
int button2Pin = A1; // (u ovoj verziji koda koristi se analogni ulaz kao digitalni)
int stepIN1Pin = 10;
int stepIN2Pin = 13;
int stepIN3Pin = 12;
int stepIN4Pin = 11;
int stepsPerRevolution = 2060; // amount of steps per revolution

//char password[4];
char dist[4];
int j=0;
char customKey=0;

 

const byte ROWS = 4;
const byte COLS = 4;

char hexaKeys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {9, 8, 7, 6};
byte colPins[COLS] = {5, 4, 3, 2};
Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
LiquidCrystal_I2C lcd(0x27, 16, 2);
Stepper myStepper(stepsPerRevolution, stepIN2Pin, stepIN4Pin, stepIN3Pin, stepIN1Pin);

void setup(){
pinMode(button1Pin, INPUT);
pinMode(button2Pin, INPUT);
myStepper.setSpeed(15);
lcd.backlight();
lcd.init();
const byte entryMaxSize = 3; //maksimalan broj znamenki 0-999
static char digits[entryMaxSize + 1]; // array gdje cemo spremati unešene znamenke, treba nam još jedno ekstra mjesto za znak za terminaciju "\0"
bool a = true; // varijabla koja označava unošenje broja

//čitanje iz eeproma zadnju spremljenu vrijednost; kad se arduino upali da ostane na zadnjoj podešenoj vrijednosti
for(int i=0;i<entryMaxSize;i++){
digits[i]=EEPROM.read(i);
}
long int distance = atol(digits); //konverzija unešenih znakova u jednu brojku
//ispisivanje učitanih vrijednosti
lcd.clear();
lcd.print("Dist set:");
lcd.setCursor(0, 1); //lcd u drugi red
for (i = 0; i < entryMaxSize; i++) {
lcd.print(digits[i]);
}
}


void loop(){
static byte x; // index znamnki

char key = keypad.getKey();
if (key != NO_KEY) // Check for a valid key.
{
switch (key)//prouči malo switch-case funkcije u C-u... ako imaš vremena i volje učiti 
{
case '#': //ako je unešena znamenka "#"
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("enter dist:");
lcd.setCursor(0, 1); //lcd u drugi red
x = 0; // reset the position of array
a = true;
break;

case 'A':
if (a) // ako je u programibilnom modu
{
lcd.clear();
lcd.print("Dist set:");
lcd.setCursor(0, 1); //lcd u drugi red
for (i = 0; i < entryMaxSize; i++)
{
lcd.print(digits[i]);
EEPROM.write(i,digits[i]);
}
a = false; // izlaz iz programibilnog moda
long int distance = atol(digits); //konverzija unešenih znakova u jednu brojku

}
}
break;

default:
if (a)// ako je u programibilnom modu
{
// add key to userinput array and increment counter
if ( key >= '0' && key <= '9' ){ // key is of type char and has a value between 0 and 9 so do something with it.
digits[x++] = key; //zapisujemo pritisnutu vrijednost na poziciju x, te povecavamo poziciju da bi upisali sljedeću znamenku
digits[x] = '\0';
lcd.print( key ) ; // new print statement <<<<<<<<<<<<<<<<
}
}
break;
}
}

if (((button1State == LOW) && !(button2State == LOW))) // if we're pushing button 1 OR button 2
myStepper.step(-stepsPerRevolution* distance); // tu još unesi korekcijski faktor (ako je potrebno)
if (((button2State == LOW) && !(button1State == LOW))) // if we're pushing button 1 OR button 2
myStepper.step(-stepsPerRevolution/2);
}

12 mjeseci
neaktivan
offline
Re: Arduino - projekti, ideje, savjeti, problemi

Probao sam ga verificirat ali mi izbacuje sljedeću poruku 'i' was not declared in this scope

 

for (i = 0; i < entryMaxSize; i++)  //ovdje ne znam da li dolazi ; na kraju. kad sm to stavio ond mi poruku prebacuje na sljedeći red //

lcd.print(digits[i]);

 

 

Poruka je uređivana zadnji put sri 11.9.2019 19:00 (hrmnk).
12 mjeseci
neaktivan
offline
Re: Arduino - projekti, ideje, savjeti, problemi

Da li je ovo dobro jer 'j' više nigdje ne nalazim u kodu.

 

Kad promjenim j u i onda dobijem ovu drugu poruku

8 godina
offline
Re: Arduino - projekti, ideje, savjeti, problemi

ispravak u liniji 18:

int i=0;

ispravak u liniji 66:

char key = customKeypad.getKey();

 

iza one for petlje ne ide ; ta petlja služi za ispis znamenki

 

12 mjeseci
neaktivan
offline
Re: Arduino - projekti, ideje, savjeti, problemi

Ispravio sam 

 

Sad mi se ovo pojavilo .

 

 

Poruka je uređivana zadnji put čet 12.9.2019 3:17 (hrmnk).
8 godina
offline
Re: Arduino - projekti, ideje, savjeti, problemi

ajde prebaci linije koje se nalaze u setup() funkciji izvan nje.

znači prebaci sljedeće tri linije:

const byte entryMaxSize = 3; //maksimalan broj znamenki 0-999

static char digits[entryMaxSize + 1]; // array gdje cemo spremati unešene znamenke, treba nam još jedno ekstra mjesto za znak za terminaciju "\0"
bool a = true; // varijabla koja označava unošenje broja

 

u liniju 22, tj. u red iza:

char customKey=0;

 

 

Problem je što nemam instaliran arduino IDE, pa nemogu provjeriti ispravnost koda.

12 mjeseci
neaktivan
offline
Re: Arduino - projekti, ideje, savjeti, problemi

prebačeno

 poruka i greška

 

8 godina
offline
Re: Arduino - projekti, ideje, savjeti, problemi

Natjerao si me da instaliram Arduino te probam kod.

Meni sad kompajlira bez greške, a sad dal' ce program raditi onak kak sam zamislio, neznam...

 

// program za pokretanje step motora napred nazad
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
#include <Stepper.h> //including stepper motor library
#include <EEPROM.h>

int button1Pin = A0; // (u ovoj verziji koda koristi se analogni ulaz kao digitalni)
int button2Pin = A1; // (u ovoj verziji koda koristi se analogni ulaz kao digitalni)
int stepIN1Pin = 10;
int stepIN2Pin = 13;
int stepIN3Pin = 12;
int stepIN4Pin = 11;
int stepsPerRevolution = 2060; // amount of steps per revolution

//char password[4];
char dist[4];
int i=0;
char customKey=0;
const byte entryMaxSize = 3; //maksimalan broj znamenki 0-999
static char digits[entryMaxSize + 1]; // array gdje cemo spremati unešene znamenke, treba nam još jedno ekstra mjesto za znak za terminaciju "\0"
bool a = true; // varijabla koja označava unošenje broja

const byte ROWS = 4;
const byte COLS = 4;

char hexaKeys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {9, 8, 7, 6};
byte colPins[COLS] = {5, 4, 3, 2};
Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
LiquidCrystal_I2C lcd(0x27, 16, 2);
Stepper myStepper(stepsPerRevolution, stepIN2Pin, stepIN4Pin, stepIN3Pin, stepIN1Pin);
int button1State, button2State;
long int distance;

void setup(){
pinMode(button1Pin, INPUT);
pinMode(button2Pin, INPUT);
myStepper.setSpeed(15);
lcd.backlight();
lcd.init();

//čitanje iz eeproma zadnju spremljenu vrijednost; kad se arduino upali da ostane na zadnjoj podešenoj vrijednosti
for(int i=0;i<entryMaxSize;i++){
digits[i]=EEPROM.read(i);
}
distance = atol(digits); //konverzija unešenih znakova u jednu brojku
//ispisivanje učitanih vrijednosti
lcd.clear();
lcd.print("Dist set:");
lcd.setCursor(0, 1); //lcd u drugi red
for (i = 0; i < entryMaxSize; i++) {
lcd.print(digits[i]);
}
}


void loop(){
static byte x; // index znamnki

char key = customKeypad.getKey();
if (key != NO_KEY) // Check for a valid key.
{
switch (key)//prouči malo switch-case funkcije u C-u... ako imaš vremena i volje učiti
{
case '#': //ako je unešena znamenka "#"
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("enter dist:");
lcd.setCursor(0, 1); //lcd u drugi red
x = 0; // reset the position of array
a = true;
break;

case 'A':
if (a){ // ako je u programibilnom modu
lcd.clear();
lcd.print("Dist set:");
lcd.setCursor(0, 1); //lcd u drugi red
for (i = 0; i < entryMaxSize; i++){
lcd.print(digits[i]);
EEPROM.write(i,digits[i]);
}
a = false; // izlaz iz programibilnog moda
distance = atol(digits); //konverzija unešenih znakova u jednu brojku
}
break;

default:
if (a){ // ako je u programibilnom modu
// add key to userinput array and increment counter
if ( key >= '0' && key <= '9' ){ // key is of type char and has a value between 0 and 9 so do something with it.
digits[x++] = key; //zapisujemo pritisnutu vrijednost na poziciju x, te povecavamo poziciju da bi upisali sljedeću znamenku
digits[x] = '\0';
lcd.print( key ) ; // new print statement <<<<<<<<<<<<<<<<
}
}
break;
}
}

button1State = digitalRead(button1Pin);
button2State = digitalRead(button2Pin);
if (((button1State == LOW) && !(button2State == LOW))) // if we're pushing button 1 OR button 2
myStepper.step(-stepsPerRevolution* distance); // tu još unesi korekcijski faktor (ako je potrebno)
if (((button2State == LOW) && !(button1State == LOW))) // if we're pushing button 1 OR button 2
myStepper.step(-stepsPerRevolution/2);
}

12 mjeseci
neaktivan
offline
Arduino - projekti, ideje, savjeti, problemi

Svaka čast majstore. Kod radi upravo onako kako sam zamislio. E sad još trebam složit mehaniku i sve to skalupit i mislim da će biti super.

 

Hvala na trudu i pomoći

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

Nema problema. Drago mi je da radi.

 

ajde samo promijeni

bool a = true; // varijabla koja označava unošenje broja

u:

bool a = false; // varijabla koja označava unošenje broja

 

tako da pri pokretanju nije automatski u programibilnom modu, nego tek nakon pritiska na tipku "#"

 

i snimi video kad sve složiš :)

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

Bok

Ima li netko iskustva sa nRF24L01? Ne mogu uspostavit komunikaciju izmedu 2 modula, prije mi je bilo sve normalno radilo, i pospremio sam ih na 2 tjedna, i nakon toga vise se ne zele povezati. Probao sam testove s ove stranice, test na postu #29 prode na oba modula, dok test na postu #1 ne zeli. Kada probam poslat obican Hello World test, ili ne salje nista ili ako posalje posalje corruptan paket. Moze neki savjet? Probao sam zice mjenjat, prespajat sve ali ne radi

 

 

EDIT: nakon nekoliko sati igranja, proradio je, radio sve dok ga nisam zgasio da spojim gljivice, nakon toga ponovno ne zeli uspostavit komunikaciju. Sve mi se cini da nesto hardverski ne valja

 

 

Ako sam nešto progriješio, ispravite me. :D Mlad sam, još učim! :D
Poruka je uređivana zadnji put pon 23.9.2019 21:33 (Tony1999).
Moj PC  
0 0 hvala 0
9 godina
online
Arduino - projekti, ideje, savjeti, problemi

Na koji način pravilno koristiti I2C? Pitam za STM32 pločicu.

Naime, otvorim sam Wire library i tamo(gdje je definiran objekat Wire) promjenio da želim koristiti I2C2(pinovi B11 i B10, STM32F103C8), te sam u WireBase.h proširio buffer s 32 na 34 bajta(kako bi na AT24C32 mogao zapisati cijeli page iz jednog pucnja).

No izgleda da mi SH1106 library stvara problem. To je Lib za 1.3 OLED ekran. Pogledao sam library i našao da se Wire.begin(adresa) koristi dva puta unutar nje.

 

Prvo korištenje begin funkcije je u funkciji za podešavanje ekrana(pozivam ju iz setupa), drugo korištenje je unutar funkcije koja šalje komande ekranu.

 

Kod -> https://github.com/Pararera/Onboard-computer-for-bicycle/blob/master/Software/Libraries/Adafruit_SH1106_STM32-master/Adafruit_SH1106_STM32.cpp

 

Našao sam ovaj link -> http://wiring.org.co/reference/libraries/Wire/Wire_begin_.html

U njemu jasno piše da se begin funkcija poziva samo jednom iz setup funkcije. Ako upišemo adresu onda STM32 postaje slave, ako pozovem funkciju bez adrese(Wire.begin()) tad STM32 postaje master.

Pokušao sam ukloniti Wire.begin iz SH1106 no opet ne radi, jednostavno moram izbaciti library da bi komunikacija između radila.

 

 

@Stavio sam I2C scanner, pokrenem ga i dođe do Scanning... i tu stane.

Izvućem USB iz kompa(ugasim ga totalno) i ponovno ga upalim, kad gle ono radi.

Pronalazi 3 uređaja, kako i treba.

Ekran je 0x3C kao što je i do sad bio.

Jedino šta mi pada na pamet je to da kad izvućem USB, programator i dalje radi. Njegova masa je spojena s masom od svih modula.

Do prije koji dan je sve radilo kako treba.

Pločica s modula mi je bila na kućištu kompa, jučer odlučio dovršiti EEPROM lib kad ono ništa ne radi više.

Poruka je uređivana zadnji put uto 24.9.2019 18:07 (Dex.pwn).
Moj PC  
0 0 hvala 0
9 godina
online
Re: Arduino - projekti, ideje, savjeti, problemi

Evo ako netko treba library ta AT24C32 ili AT24C64 EEPROM čip.

Trenutno radi samo za STM32 pločicu(nekako i logično jel Arduino ima svoj EEPROM). Podržava write-page metodu, write, read i update.

Koristim ga za svoj projekat, pa reko da i drugima podjelim zasebno.

Razlog zašto sam odbacio recimo ovaj library je taj što njegova funkcija writePage traje 27ms za 80 bajtova, dok s ovim libom treba 15ms.

Dalje nisam tražio pa sam odlučio svoj lib napraviti.

 

https://github.com/Pararera/AT24CXX_STM32

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

https://blog.arduino.cc/2019/10/18/arduino-pro-ide-alpha-preview-with-advanced-features/

Arduino Pro IDE

Izgleda da ce konacno dovesti IDE na neku standardnu razinu.

Isprobao sam i trebutno mi se autocomplete cini ok, ali ima nekih bugova sto je normalno za alfa verziju.

Uglavnom kroz nekih pola god- god dana bi mogli imati dobar IDE na raspolaganju i necemo se vise morati oslanjati na platformIO za autocomplete.

Moj PC  
4 0 hvala 3
9 godina
online
Re: Arduino - projekti, ideje, savjeti, problemi

I dalje mi je Sublime bolji 

Jednostavno sam navikao na njega

18 mjeseci
neaktivan
offline
Arduino - projekti, ideje, savjeti, problemi

Pozdrav ljudi.

 

izvinjavam se prije svega ako je bila sličan post prije, jer stvarno sam tražio i nisam mogao pronaći ništa slično.

Naime, prijatelju pomažem da napravi automatski otvaranje vrata kao školski projekat. 
nismo vični ni jedna ni drugi u istom pa ako mogu sa vas zamolim za pomoć. 
ideja je slijedeća.

Potrebno je napraviti kao kavez za ptice metalni velicine 1x1 metar. Kavez bi imao vrata drvena težine oko 2 kg, i ista bi se trebala otvarati automatski od 07:00 a zatvarati u 20:00. Sve bi trrbalo biti spojeno na 220v u utičnicubda kažem. Vrata bi se podizala na princip lifta, gore/dolje. E sad, mene brine prvo napajanje šta da uzmem tu, i motor koji da odaberem, koja jačina bi bila dovoljna da podiže toliko trska vrata?

 

Svaki savjet bi dobro došao jer imamo za isto da napravimo za nekih 15-20 dana.

 

hvala puno vam unaprijed 

 
0 0 hvala 0
9 godina
online
Re: Arduino - projekti, ideje, savjeti, problemi
Neki stari motor od mašine, preko redukcije koja bi pokretala po "ravnom" zupčaniku. Na slični način radi otvaranje klizne kapije.
Treba ti i RTC, recimo DS3231, dva hall senzora i nekakav IC s kojim možeš DC naponom upravljati AC naponom.
Malo je to vremena za takav rad.
Poruka je uređivana zadnji put čet 16.1.2020 22:25 (Dex.pwn).
8 godina
offline
Re: Arduino - projekti, ideje, savjeti, problemi

Malo si zakomplicirao sa motorom od veš mašine.

Jednostavnije mu zvuči motor od brisača na autu, ako može vrtiti prase, može dignuti i vrata od 2 kg.

radi na 12 V i lagano ga se upravlja sa H mostom.

 

Pretvarač sa 230Vac na 12Vdc, (Arduino UNO može raditi i sa 12V), 4 mosfeta za H bridge da može otvarat i zatvarat vrata, dva mikroprekidača ili nekih drugih senzora za krajnje položaje i naravno RTC.

A od mehanike kombinacija zupčanik/letva ili kolutura/sajla.

Nije ne izvedivo. Ovisno kolko dečki imaju znanja sa programiranjem...

 

9 godina
online
Re: Arduino - projekti, ideje, savjeti, problemi

To mi je prvo palo na pamet.

Ne bi trebalo biti teško za isprogramirati. Napravi se u manje od pola radnog dana.

18 mjeseci
neaktivan
offline
Arduino - projekti, ideje, savjeti, problemi

Hvala Vam mnogo na odgovoru. Motora od brisača se nikad ne bih sjetio iskreno. Malo se gubim u komponentama pored motora. Nije li vam problem da mi pomognete oko sheme kako bi se to spojilo i oko komponenata, Npr linkovi za sve komponente sa ebaya bi mi bile od prevelike pomoći. Jer nisam siguran koje su to komponente. Ako ne, i sa ovim ste mi previse pomogli :)

 
0 0 hvala 0
9 godina
online
Re: Arduino - projekti, ideje, savjeti, problemi
Budem ti napravio do pon
18 mjeseci
neaktivan
offline
Re: Arduino - projekti, ideje, savjeti, problemi

Hvala ti mnogo. Nikad nisam radio sa pravim stvarima. To je bilo uglavnom neko sitno mjerenje temperature i očitavanje iste na display. Malo ke strah spajanja istog na struju hehe. A i kod kupovine komponenata, da li ću bas kupiti one prave :) sve u svemu sve pohvale i mnogo ti hvala unaprijed na pomoći :)

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

A jesi siguran da će stvari sa ebaja stići u 20 dana,pa još dok spojiš .... istestiraš ....

Poruka je uređivana zadnji put sub 18.1.2020 9:34 (nbdy32).
Moj PC  
2 0 hvala 1
9 godina
online
Re: Arduino - projekti, ideje, savjeti, problemi
Imaš na TMEu, Digikey, i Mouser
Brži shipping imaju
18 mjeseci
neaktivan
offline
Arduino - projekti, ideje, savjeti, problemi

Pa u pravu ste. Malo se duze čeka. Gledao sam isto par stranica ima i dx.com, kažu da jako brzo dodje narudžba. Svakako ću pogledati na svim stranicama ovim vašim, ako budete mogli mi poslati općenite linkove a ja ću potražiti gdje ima da brže stigne :) 

 
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