Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Arduino UNO - pocetnik

[es] :: Elektronika :: Mikrokontroleri :: Arduino UNO - pocetnik

Strane: 1 2

[ Pregleda: 10064 | Odgovora: 35 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

uros2002
Dejan Ranisavljevic
Dobanovci

Član broj: 133852
Poruke: 119
*.dynamic.isp.telekom.rs.



Profil

icon Arduino UNO - pocetnik12.02.2015. u 23:28 - pre 95 meseci
Pozdrav svima.

Potrebna mi je pomoc oko prepravke koda ili pisanja za sledecu sliku.

taster 1 pali LED1
taster 2 pali LED2
taster 3 pali LED3
taster 4 pali LED4

Ovaj kod sam nasao ali ne znam da ga prepravim posto sam pocetnik u ovome.
Vidim da u zavisnosti od tastera koji stisnem dobijam na analogniulaz A0 odredjenu vrednost i prema tome treba da aktivira Digitalniizlaz za LED na Pin13

Da li moze neko da mi pomogne da se prepravi ovaj kod.
Code:
 /* 
  Debounce
  
  Each time the input pin goes from LOW to HIGH (e.g. because of a push-button
  press), the output pin is toggled from LOW to HIGH or HIGH to LOW.  There's
  a minimum delay between toggles to debounce the circuit (i.e. to ignore
  noise).  
  
  created 28 October 2009
  by Riaan Cornelius
  
  
  */

 // constants won't change. They're used here to 
 // set pin numbers:
 const int buttonPin = 0;     // the number of the pushbutton pin
 const int ledPin =  13;      // the number of the LED pin for testing
 
 const int BUTTON1 = 1;
 const int BUTTON2 = 2;
 const int BUTTON3 = 3;
 const int BUTTON4 = 4;
 const int BUTTON5 = 5;
 
 const int BUTTON1LOW = 970;
 const int BUTTON1HIGH = 1024;
 const int BUTTON2LOW = 850;
 const int BUTTON2HIGH = 950;
 const int BUTTON3LOW = 700;
 const int BUTTON3HIGH = 800;
 const int BUTTON4LOW = 400;
 const int BUTTON4HIGH = 650;
 const int BUTTON5LOW = 250;
 const int BUTTON5HIGH = 350;
 
 // Variables will change:
 int ledState = HIGH;         // the current state of the output pin
 int buttonState;             // the current reading from the input pin
 int lastButtonState = LOW;   // the previous reading from the input pin

 // the following variables are long's because the time, measured in miliseconds,
 // will quickly become a bigger number than can be stored in an int.
 long lastDebounceTime = 0;  // the last time the output pin was toggled
 long debounceDelay = 50;    // the debounce time; increase if the output flickers

 void setup() {
   pinMode(buttonPin, INPUT);
   pinMode(ledPin, OUTPUT);
   Serial.begin(9600);
 }

 void loop() {
   // read the state of the switch into a local variable:
   int reading = analogRead(buttonPin);   
   int tmpButtonState = LOW;             // the current reading from the input pin
   
   if(reading>BUTTON5LOW && reading<BUTTON5HIGH){
     //Read switch 5
     tmpButtonState = BUTTON5;
   }else if(reading>BUTTON4LOW && reading<BUTTON4HIGH){
     //Read switch 4
     tmpButtonState = BUTTON4;
   }else if(reading>BUTTON3LOW && reading<BUTTON3HIGH){
     //Read switch 3
     tmpButtonState = BUTTON3;
   }else if(reading>BUTTON2LOW && reading<BUTTON2HIGH){
     //Read switch 2
     tmpButtonState = BUTTON2;
   }else if(reading>BUTTON1LOW && reading<BUTTON1HIGH){
     //Read switch 1
     tmpButtonState = BUTTON1;
   }else{
     //No button is pressed;
     tmpButtonState = LOW;
   }

   // check to see if you just pressed the button 
   // (i.e. the input went from LOW to a buttonState),  and you've waited 
   // long enough since the last press to ignore any noise:  

   // If the switch changed, due to noise or pressing:
   if (tmpButtonState != lastButtonState) {
     // reset the debouncing timer
     lastDebounceTime = millis();
   } 

   if ((millis() - lastDebounceTime) > debounceDelay) {
     // whatever the reading is at, it's been there for longer
     // than the debounce delay, so take it as the actual current state:
     buttonState = tmpButtonState;
     Serial.println(buttonState);
   }

   // save the reading.  Next time through the loop,
   // it'll be the lastButtonState:
   lastButtonState = tmpButtonState;
   
   // set the LED using the state of the button for testing:
   switch(buttonState){
     case BUTTON1:
     digitalWrite(ledPin, buttonState>0);
     break;
     case BUTTON2:
     digitalWrite(ledPin, buttonState>0);
     break;
     case BUTTON3:
     digitalWrite(ledPin, buttonState>0);
     break;
     case BUTTON4:
     digitalWrite(ledPin, buttonState>0);
     break;
     case BUTTON5:
     digitalWrite(ledPin, buttonState>0);
     break;
   }
 }


I da li na recimo izlaze kao na slici mogu da stavim da aktivira ovakvu plocu kao na slici.

Hvala unapred
Dejan Ranisavljevic

Prikačeni fajlovi
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15718
*.dynamic.sbb.rs.

Sajt: mysql.rs


+2352 Profil

icon Re: Arduino UNO - pocetnik13.02.2015. u 10:05 - pre 95 meseci
samo na kraju prepravi da u zavisnosti koji je pritisnut upalis razlicit led

Code:

   switch(buttonState){
     case BUTTON1:
     digitalWrite(ledPin1, buttonState>0);
     break;
     case BUTTON2:
     digitalWrite(ledPin2, buttonState>0);
     break;
     case BUTTON3:
     digitalWrite(ledPin3, buttonState>0);
     break;
     case BUTTON4:
     digitalWrite(ledPin4, buttonState>0);
     break;
     case BUTTON5:
     digitalWrite(ledPin5, buttonState>0);
     break;
   }


i naravno moras da postavis te pinove i da budu input

Code:

 void setup() {
   pinMode(buttonPin, INPUT);
   pinMode(ledPin1, OUTPUT);
   pinMode(ledPin2, OUTPUT);
   pinMode(ledPin3, OUTPUT);
   pinMode(ledPin4, OUTPUT);
   pinMode(ledPin5, OUTPUT);
   Serial.begin(9600);
 }


i gore skroz na pocetku moras da definises za ledpinX koji je to fizicki pin

Code:

 const int buttonPin = 0;     // the number of the pushbutton pin
 const int ledPin1 =  13;      // the number of the LED pin for testing
 const int ledPin2 =  14;      // the number of the LED pin for testing
 const int ledPin3 =  15;      // the number of the LED pin for testing
 const int ledPin4 =  16;      // the number of the LED pin for testing
 const int ledPin5 =  17;      // the number of the LED pin for testing


 
Odgovor na temu

uros2002
Dejan Ranisavljevic
Dobanovci

Član broj: 133852
Poruke: 119
*.dynamic.isp.telekom.rs.



Profil

icon Re: Arduino UNO - pocetnik13.02.2015. u 20:20 - pre 95 meseci
Hvala na odgovoru

Promenio sam kod i sad izgleda ovako
Code:
/* 
  Debounce
  
  Each time the input pin goes from LOW to HIGH (e.g. because of a push-button
  press), the output pin is toggled from LOW to HIGH or HIGH to LOW.  There's
  a minimum delay between toggles to debounce the circuit (i.e. to ignore
  noise).  
  
  created 28 October 2009
  by Riaan Cornelius
  
  
  */

 // constants won't change. They're used here to 
 // set pin numbers:
 
 const int buttonPin = 0;     // the number of the pushbutton pin
 const int ledPin1 =  13;      // the number of the LED pin for testing
 const int ledPin2 =  14;      // the number of the LED pin for testing
 const int ledPin3 =  15;      // the number of the LED pin for testing
 const int ledPin4 =  16;      // the number of the LED pin for testing
 const int ledPin5 =  17;      // the number of the LED pin for testing
 
 const int BUTTON1 = 1;
 const int BUTTON2 = 2;
 const int BUTTON3 = 3;
 const int BUTTON4 = 4;
 const int BUTTON5 = 5;
 
 const int BUTTON1LOW = 970;
 const int BUTTON1HIGH = 1024;
 const int BUTTON2LOW = 850;
 const int BUTTON2HIGH = 950;
 const int BUTTON3LOW = 700;
 const int BUTTON3HIGH = 800;
 const int BUTTON4LOW = 400;
 const int BUTTON4HIGH = 650;
 const int BUTTON5LOW = 0;
 const int BUTTON5HIGH = 1023;
 
 // Variables will change:
 int ledState = HIGH;         // the current state of the output pin
 int buttonState;             // the current reading from the input pin
 int lastButtonState = LOW;   // the previous reading from the input pin

 // the following variables are long's because the time, measured in miliseconds,
 // will quickly become a bigger number than can be stored in an int.
 long lastDebounceTime = 0;  // the last time the output pin was toggled
 long debounceDelay = 50;    // the debounce time; increase if the output flickers

 void setup() {
   pinMode(buttonPin, INPUT);
   pinMode(ledPin1, OUTPUT);
   pinMode(ledPin2, OUTPUT);
   pinMode(ledPin3, OUTPUT);
   pinMode(ledPin4, OUTPUT);
   pinMode(ledPin5, OUTPUT);
   Serial.begin(9600);
 }

 void loop() {
   // read the state of the switch into a local variable:
   int reading = analogRead(buttonPin);   
   int tmpButtonState = LOW;             // the current reading from the input pin
   
   if(reading>BUTTON5LOW && reading<BUTTON5HIGH){
     //Read switch 5
     tmpButtonState = BUTTON5;
   }else if(reading>BUTTON4LOW && reading<BUTTON4HIGH){
     //Read switch 4
     tmpButtonState = BUTTON4;
   }else if(reading>BUTTON3LOW && reading<BUTTON3HIGH){
     //Read switch 3
     tmpButtonState = BUTTON3;
   }else if(reading>BUTTON2LOW && reading<BUTTON2HIGH){
     //Read switch 2
     tmpButtonState = BUTTON2;
   }else if(reading>BUTTON1LOW && reading<BUTTON1HIGH){
     //Read switch 1
     tmpButtonState = BUTTON1;
   }else{
     //No button is pressed;
     tmpButtonState = LOW;
   }

   // check to see if you just pressed the button 
   // (i.e. the input went from LOW to a buttonState),  and you've waited 
   // long enough since the last press to ignore any noise:  

   // If the switch changed, due to noise or pressing:
   if (tmpButtonState != lastButtonState) {
     // reset the debouncing timer
     lastDebounceTime = millis();
   } 

   if ((millis() - lastDebounceTime) > debounceDelay) {
     // whatever the reading is at, it's been there for longer
     // than the debounce delay, so take it as the actual current state:
     buttonState = tmpButtonState;
     Serial.println(buttonState);
   }

   // save the reading.  Next time through the loop,
   // it'll be the lastButtonState:
   lastButtonState = tmpButtonState;
   
   // set the LED using the state of the button for testing:
   switch(buttonState){
     case BUTTON1:
     digitalWrite(ledPin1, buttonState>0);
     break;
     case BUTTON2:
     digitalWrite(ledPin2, buttonState>0);
     break;
     case BUTTON3:
     digitalWrite(ledPin3, buttonState>0);
     break;
     case BUTTON4:
     digitalWrite(ledPin4, buttonState>0);
     break;
     case BUTTON5:
     digitalWrite(ledPin5, buttonState>0);
     break;
   }
 }


Probao sam da ga uvezem u simulator Arduino Uno u Proteus 8 i neradi kako teba.

Sta sam pogresio?
Dejan Ranisavljevic

 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15718
*.dynamic.sbb.rs.

Sajt: mysql.rs


+2352 Profil

icon Re: Arduino UNO - pocetnik13.02.2015. u 20:41 - pre 95 meseci
za pocetak kada uradis

Code:

...
 void loop() {
   // read the state of the switch into a local variable:
   int reading = analogRead(buttonPin);   
   int tmpButtonState = LOW;             // the current reading from the input pin
...


ovako deklarisana reading varijabla ce biti procitana samo jednom a ne svaki put u petlji, dakle mrdni deklaraciju varijable gore (ispod lastButtonState) a ovde samo imaj

Code:

...
 void loop() {
   int tmpButtonState = LOW;             // the current reading from the input pin

   // read the state of the switch into a local variable:
   reading = analogRead(buttonPin);   
...


dalje, ne znam taj simulator dal sta valja ili ne, ako valja zaustavis se posle ovog analog read i procitas za svako dugme tacno sta si procitao ako i dalje ne radi


 
Odgovor na temu

uros2002
Dejan Ranisavljevic
Dobanovci

Član broj: 133852
Poruke: 119
*.dynamic.isp.telekom.rs.



Profil

icon Re: Arduino UNO - pocetnik13.02.2015. u 21:31 - pre 95 meseci
Ako sam dobro razumeo ovako treba.

Code:
/* 
  Debounce
  
  Each time the input pin goes from LOW to HIGH (e.g. because of a push-button
  press), the output pin is toggled from LOW to HIGH or HIGH to LOW.  There's
  a minimum delay between toggles to debounce the circuit (i.e. to ignore
  noise).  
  
  created 28 October 2009
  by Riaan Cornelius
  
  
  */

 // constants won't change. They're used here to 
 // set pin numbers:
 
 const int buttonPin = 0;     // the number of the pushbutton pin
 const int ledPin1 =  13;      // the number of the LED pin for testing
 const int ledPin2 =  14;      // the number of the LED pin for testing
 const int ledPin3 =  15;      // the number of the LED pin for testing
 const int ledPin4 =  16;      // the number of the LED pin for testing
 const int ledPin5 =  17;      // the number of the LED pin for testing
 
 const int BUTTON1 = 1;
 const int BUTTON2 = 2;
 const int BUTTON3 = 3;
 const int BUTTON4 = 4;
 const int BUTTON5 = 5;
 
 const int BUTTON1LOW = 970;
 const int BUTTON1HIGH = 1024;
 const int BUTTON2LOW = 850;
 const int BUTTON2HIGH = 950;
 const int BUTTON3LOW = 700;
 const int BUTTON3HIGH = 800;
 const int BUTTON4LOW = 400;
 const int BUTTON4HIGH = 650;
 const int BUTTON5LOW = 0;
 const int BUTTON5HIGH = 1023;
 
 // Variables will change:
 int ledState = HIGH;         // the current state of the output pin
 int buttonState;             // the current reading from the input pin
 int lastButtonState = LOW;   // the previous reading from the input pin
 int reading = analogRead(buttonPin);

 // the following variables are long's because the time, measured in miliseconds,
 // will quickly become a bigger number than can be stored in an int.
 long lastDebounceTime = 0;  // the last time the output pin was toggled
 long debounceDelay = 50;    // the debounce time; increase if the output flickers

 void setup() {
   pinMode(buttonPin, INPUT);
   pinMode(ledPin1, OUTPUT);
   pinMode(ledPin2, OUTPUT);
   pinMode(ledPin3, OUTPUT);
   pinMode(ledPin4, OUTPUT);
   pinMode(ledPin5, OUTPUT);
   Serial.begin(9600);
 }

 void loop() {
   // read the state of the switch into a local variable:
      
   int tmpButtonState = LOW;             // the current reading from the input pin
   
   reading = analogRead(buttonPin);

   if(reading>BUTTON5LOW && reading<BUTTON5HIGH){
     //Read switch 5
     tmpButtonState = BUTTON5;
   }else if(reading>BUTTON4LOW && reading<BUTTON4HIGH){
     //Read switch 4
     tmpButtonState = BUTTON4;
   }else if(reading>BUTTON3LOW && reading<BUTTON3HIGH){
     //Read switch 3
     tmpButtonState = BUTTON3;
   }else if(reading>BUTTON2LOW && reading<BUTTON2HIGH){
     //Read switch 2
     tmpButtonState = BUTTON2;
   }else if(reading>BUTTON1LOW && reading<BUTTON1HIGH){
     //Read switch 1
     tmpButtonState = BUTTON1;
   }else{
     //No button is pressed;
     tmpButtonState = LOW;
   }

   // check to see if you just pressed the button 
   // (i.e. the input went from LOW to a buttonState),  and you've waited 
   // long enough since the last press to ignore any noise:  

   // If the switch changed, due to noise or pressing:
   if (tmpButtonState != lastButtonState) {
     // reset the debouncing timer
     lastDebounceTime = millis();
   } 

   if ((millis() - lastDebounceTime) > debounceDelay) {
     // whatever the reading is at, it's been there for longer
     // than the debounce delay, so take it as the actual current state:
     buttonState = tmpButtonState;
     Serial.println(buttonState);
   }

   // save the reading.  Next time through the loop,
   // it'll be the lastButtonState:
   lastButtonState = tmpButtonState;
   
   // set the LED using the state of the button for testing:
   switch(buttonState){
     case BUTTON1:
     digitalWrite(ledPin1, buttonState>0);
     break;
     case BUTTON2:
     digitalWrite(ledPin2, buttonState>0);
     break;
     case BUTTON3:
     digitalWrite(ledPin3, buttonState>0);
     break;
     case BUTTON4:
     digitalWrite(ledPin4, buttonState>0);
     break;
     case BUTTON5:
     digitalWrite(ledPin5, buttonState>0);
     break;
   }
 }


Ovo mi je prvi put da radim neki kod i preradu postojeceg koda.
jos uvek pokusavam da pohvatam sta je sta u kodu.
Nikad do sad se nisam susreo sa Arduino niti pisanjem koda, isto tako i Proteus 8 sam sad prvi put pokrenuo i pokusavao sam da namestim Arduino simulator ali imam problem sa njim nesto neradi kako treba.

Hvala
Dejan Ranisavljevic

 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15718
*.dynamic.sbb.rs.

Sajt: mysql.rs


+2352 Profil

icon Re: Arduino UNO - pocetnik13.02.2015. u 22:04 - pre 95 meseci
jok, gore kada deklarises varijablu samo je deklarisi dakle bez = read...

e sad sto se tice "Ovo mi je prvi put da radim neki kod i preradu postojeceg koda." a da ti prvo uradis jedan

https://kldp.org/files/c+in+21+days.pdf

pa kad prodjes to onda se vrati na arduino posto ces mnogo brze nauciti da programiras tako nego da gledas u tudji koji koji ne znas sta i kako radi



 
Odgovor na temu

uros2002
Dejan Ranisavljevic
Dobanovci

Član broj: 133852
Poruke: 119
*.dynamic.isp.telekom.rs.



Profil

icon Re: Arduino UNO - pocetnik13.02.2015. u 22:54 - pre 95 meseci
Hvala za odgovore.

Nije problem i da procitam ovo sto si poslao i da naucim da programiram.

Ali ako ima neko voljan dok je ne naucim da programiram i pisem kod bez pomoci drugih da mi pomogne oko ovog problema.

Dok ni nestigne Arduino Uno koji sam porucio i dodaci koje sam takodje porucio bio sam voljan da se malo poigram u Proteusu 8 i simulatoru. Osnovne programe pocetnicke sam probao i polako ucim.
Preko digitalnog ulaza sam pravio da palim LED.
Ovo me je zanimalo posto 4 tastera sa razlicitim otpornicima povezujem na Analogni ulaz i tako palim LED.
Procitao sam da je raspon analognog signala pd 0 do 1024 i da stavljanjem odredjenih otpornika mogu da podesavam opseg tog tastera.

Pokusavam da proverim da li sam u Proteus 8 dobro nacrtao semu i pravi kod za paljenje LED preko 4 tastera.

Orginalni kod koji sam postavio u prvom postu preuzet je sa sajta
nullHow to access 5 buttons through 1 Arduino input

Kod mene nece da radi u simulatoru.
Zato sam ovde i pokrenuo temu za pomoc u prosiranju postojeceg koda. Orginalni kod ima samo izlaz na pin13 koji pali Led.
Da li moze neko da prosiri kod sa recimo dva tastera na analogni ulaz i pale dve razlicite LED diode,

Mislim da nisam nista lose pisao i pokusavao da shvatim kako sta radi.

Mislim da cu kroz za Vas koji se razumete prostih kodova uspeti lakse da savladam sta kako radi i kako se pise osnovni kod.
Za Vas je ovo mozda posao ali za mene je samo hobi.

Pitanje iz prvog posta je bilo da li ovakav kod koji moze preko analognog ulaza da [ali dve ili vse LED dioda da komanduje releima.

Sobzirom da sam pre dva, tri dana odlucio da kupim i oprobam se u Arduino nekim samo osnovnim semama i kodovima trudim se da procitam sto vise dokumentacije i raznih foruma oko Arduino. (koliko mi obaveze dozvoljavaju)

U orvom postu mi se potkrala greska
Code:
.....
 const int BUTTON4HIGH = 650;
 const int BUTTON5LOW = 0;
 const int BUTTON5HIGH = 1023;
.....

Treba da stoji
Code:
....
 const int BUTTON4HIGH = 650;
 const int BUTTON5LOW = 250;
 const int BUTTON5HIGH = 350;

....


Nadam se da nisam naporan sa pitanjima i zeljam ali kroz primere se najbolje uci.

Jos jednom veliko Hvala
Dejan Ranisavljevic

 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15718
*.dynamic.sbb.rs.

Sajt: mysql.rs


+2352 Profil

icon Re: Arduino UNO - pocetnik14.02.2015. u 01:03 - pre 95 meseci
Citat:
uros2002
Nije problem i da procitam ovo sto si poslao i da naucim da programiram.


ako nije problem onda to uradi posto malopre nisi umeo da deklaris varijablu?! da li znas koja je razlika izmedju lokalne, globalne, staticke? to su neke osnove osnova, azbuka takoreci, ako to ne savladas mozes da gledas u tudji kod do prekosutra neces skontat u cemu je stvar .. neces ti postati programer kada prodjes ovih 21 dan kursa (realno to prodjes za nekoliko dana ako se tome posvetis) ali ces imati dovoljnu osnovu da dalje mozes da ucis :)


Citat:
uros2002:
Ovo me je zanimalo posto 4 tastera sa razlicitim otpornicima povezujem na Analogni ulaz i tako palim LED.
Procitao sam da je raspon analognog signala pd 0 do 1024 i da stavljanjem odredjenih otpornika mogu da podesavam opseg tog tastera.


ti na analogni ulaz dovodis napon sa razdelnika napona koji cine (po tvojoj semi) R5 prema groundu i otpornik na tvom tasteru prema 5V
kada nije stisnut nijedan taster A0 je na 0, analogread cita 0
ako stisnes 3 pravi se razdelnik sa R5 i R3 te na A0 imas 1.6V tj analogread cita 327.
to je manje od BUTTON1LOW i zato ti nikad nije detektovao taster, zato sam ti rekao
Citat:

..zaustavis se posle ovog analog read i procitas za svako dugme tacno sta si procitao ako i dalje ne radi...


dakle procitas vrednost koju si procitao sa analogread (u debageru ili posaljes tu vrednost na seriski port)

vrlo verovatno je da su ove vrednost za druge otpornike, ako promenis R5 na 10k umesto sadasnjih 100k (sto je malo poveliko) onda za R3 od 47k A0 bude na 4.123 sto znaci da ce analogread da vrati 844 sto je mnogo blize vrednostima koje ti imas kao konstante u tabeli ...

dakle sa tvojim otpornicima (koje si izgleda birao odokativno bez ideje kako to uopste radi) citaj vrednost analogread-a svaki put kad stisnes taster i napravi konstante BUTTONxHIGH i BUTTONxLOW tako da zaokruze vrednosti sa 5% greske na otporniku (i jednom i drugom!! znaci ukupno +-10% od idealnih vrednosti)

jasno sta treba da uradis i kako?

Citat:
uros2002:
Nadam se da nisam naporan sa pitanjima i zeljam ali kroz primere se najbolje uci.


samo ti pitaj, nikoga niko ne bije po usima da ti odgovara .. sto se ti vise potrudis da naucis i razumes sta radis to ce ljudi na forumu vise da ti pomognu .. onog trenutka ako se ucini da oces sve na gotovs i ne ulazes trud tog trenutka ce svi samo poceti da te ignorisu .. tako to obicno ide i u zivotu :)

 
Odgovor na temu

ZAS011
Uzgajivač šargarepe izakuće
Vanuatu

Član broj: 288510
Poruke: 4494

ICQ: 8713400
Sajt: www.justfuckinggoogleit.c..


+523 Profil

icon Re: Arduino UNO - pocetnik14.02.2015. u 08:12 - pre 95 meseci
Pošto ne znaš da programiraš, poslušaj Bogdana i kreni od početka. Prvi programčić bi trebalo da ti bude "Blink LED", poznatiji kao "HelloWorld". To je prvo. Drugo, mora malo da poznaješ i osnove elektrotehnike kako bi ti bilo jasnije šta je to razdelnik napona, kako bi shvatio kako su povezani tasteri na jedan analogni pin kontrolera, odnosno šta se događa kada ni jedan taster nije pritisnut, a šta kada se neki od njih pritisne.

I naravno, učenje kreće od početka, kroz gomile primera, a ne iz sredine, pokušavajući da prepravljaš tuđe programe, a osnove jezika, njegove sintakse, tipova promenljivih, ... ti n isu poznate.
--
Make no mistake between my personality and my attitude.
My personality is who I am.
My attitude depends on who you are.
 
Odgovor na temu

uros2002
Dejan Ranisavljevic
Dobanovci

Član broj: 133852
Poruke: 119
*.dynamic.sbb.rs.



Profil

icon Re: Arduino UNO - pocetnik14.02.2015. u 10:44 - pre 95 meseci
Da li je ovo tacno kako sam izracunao.
R1- 47k
R2- 100k
V- 5v
izlaz -3.401v
analogni ulaz - 696
+- 5% - od 661 do 730

Ako jeste onda je kod pogresan treba za svaki taster da izmenim vrednosti.
slika 1
Dejan Ranisavljevic

 
Odgovor na temu

ZAS011
Uzgajivač šargarepe izakuće
Vanuatu

Član broj: 288510
Poruke: 4494

ICQ: 8713400
Sajt: www.justfuckinggoogleit.c..


+523 Profil

icon Re: Arduino UNO - pocetnik14.02.2015. u 11:01 - pre 95 meseci
Da ti bude lakše: http://www.raltron.com/cust/tools/voltage_divider.asp

Što ne znači da mora da naučiš neke osnovne stvari SA RAZUMEVANJEM
--
Make no mistake between my personality and my attitude.
My personality is who I am.
My attitude depends on who you are.
 
Odgovor na temu

uros2002
Dejan Ranisavljevic
Dobanovci

Član broj: 133852
Poruke: 119
*.dynamic.sbb.rs.



Profil

icon Re: Arduino UNO - pocetnik14.02.2015. u 12:50 - pre 95 meseci
Ok. Hvala.
To znam da izracunam samo da li sam dobro izracunao analogni ulaz za 3.401v koji treba da prepravim u kodu.
Dejan Ranisavljevic

 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15718
*.com
Via: [es] mailing liste

Sajt: mysql.rs


+2352 Profil

icon Re: Arduino UNO - pocetnik14.02.2015. u 12:58 - pre 95 meseci
1024/5*3.401i6.5248

10% gore (posto imas toleranciju na oba otpornika po 5%) = 766
10% dole = 626

dakle za taj taster je 626-766 opseg koji moze da bude na A0 pinu

mnogo ti je 100k u jednoj grani suvise ce ti biti blizu svi ostali, 10k
je mnogo bolja vrednost
 
Odgovor na temu

uros2002
Dejan Ranisavljevic
Dobanovci

Član broj: 133852
Poruke: 119
*.dynamic.isp.telekom.rs.



Profil

icon Re: Arduino UNO - pocetnik14.02.2015. u 15:23 - pre 95 meseci
Pozdrav,

Izmenuo sam vrednosti tastera i otpornik od 100k u 10k.
U simulatoru je uspesno pokrenuta simulacija i svako dugme pali odredjenu LED diodu.

Code:
/* 
  Debounce
  
  Each time the input pin goes from LOW to HIGH (e.g. because of a push-button
  press), the output pin is toggled from LOW to HIGH or HIGH to LOW.  There's
  a minimum delay between toggles to debounce the circuit (i.e. to ignore
  noise).  
  
  created 28 October 2009
  by Riaan Cornelius
  
  
  */

 // constants won't change. They're used here to 
 // set pin numbers:
 
 const int buttonPin = 0;     // the number of the pushbutton pin
 const int ledPin1 =  13;      // the number of the LED pin for testing
 const int ledPin2 =  12;      // the number of the LED pin for testing
 const int ledPin3 =  11;      // the number of the LED pin for testing
 const int ledPin4 =  10;      // the number of the LED pin for testing
 const int ledPin5 =  9;      // the number of the LED pin for testing
 
 const int BUTTON1 = 1;
 const int BUTTON2 = 2;
 const int BUTTON3 = 3;
 const int BUTTON4 = 4;
 const int BUTTON5 = 5;
 
 const int BUTTON1LOW = 461;
 const int BUTTON1HIGH = 563;
 const int BUTTON2LOW = 288;
 const int BUTTON2HIGH = 352;
 const int BUTTON3LOW = 162;
 const int BUTTON3HIGH = 198;
 const int BUTTON4LOW = 118;
 const int BUTTON4HIGH = 144;
 const int BUTTON5LOW = 100;
 const int BUTTON5HIGH = 122;
 
 // Variables will change:
 int ledState = HIGH;         // the current state of the output pin
 int buttonState;             // the current reading from the input pin
 int lastButtonState = LOW;   // the previous reading from the input pin
 int reading;

 // the following variables are long's because the time, measured in miliseconds,
 // will quickly become a bigger number than can be stored in an int.
 long lastDebounceTime = 0;  // the last time the output pin was toggled
 long debounceDelay = 50;    // the debounce time; increase if the output flickers

 void setup() {
   pinMode(buttonPin, INPUT);
   pinMode(ledPin1, OUTPUT);
   pinMode(ledPin2, OUTPUT);
   pinMode(ledPin3, OUTPUT);
   pinMode(ledPin4, OUTPUT);
   pinMode(ledPin5, OUTPUT);
   Serial.begin(9600);
 }

 void loop() {
   // read the state of the switch into a local variable:
      
   int tmpButtonState = LOW;             // the current reading from the input pin
   int reading = analogRead(buttonPin);
   
   if(reading>BUTTON5LOW && reading<BUTTON5HIGH){
     //Read switch 5
     tmpButtonState = BUTTON5;
   }else if(reading>BUTTON4LOW && reading<BUTTON4HIGH){
     //Read switch 4
     tmpButtonState = BUTTON4;
   }else if(reading>BUTTON3LOW && reading<BUTTON3HIGH){
     //Read switch 3
     tmpButtonState = BUTTON3;
   }else if(reading>BUTTON2LOW && reading<BUTTON2HIGH){
     //Read switch 2
     tmpButtonState = BUTTON2;
   }else if(reading>BUTTON1LOW && reading<BUTTON1HIGH){
     //Read switch 1
     tmpButtonState = BUTTON1;
   }else{
     //No button is pressed;
     tmpButtonState = LOW;
   }

   // check to see if you just pressed the button 
   // (i.e. the input went from LOW to a buttonState),  and you've waited 
   // long enough since the last press to ignore any noise:  

   // If the switch changed, due to noise or pressing:
   if (tmpButtonState != lastButtonState) {
     // reset the debouncing timer
     lastDebounceTime = millis();
   } 

   if ((millis() - lastDebounceTime) > debounceDelay) {
     // whatever the reading is at, it's been there for longer
     // than the debounce delay, so take it as the actual current state:
     buttonState = tmpButtonState;
     Serial.println(buttonState);
   }

   // save the reading.  Next time through the loop,
   // it'll be the lastButtonState:
   lastButtonState = tmpButtonState;
   
   // set the LED using the state of the button for testing:
   switch(buttonState){
     case BUTTON1:
     digitalWrite(ledPin1, buttonState>0);
     break;
     case BUTTON2:
     digitalWrite(ledPin2, buttonState>0);
     break;
     case BUTTON3:
     digitalWrite(ledPin3, buttonState>0);
     break;
     case BUTTON4:
     digitalWrite(ledPin4, buttonState>0);
     break;
     case BUTTON5:
     digitalWrite(ledPin5, buttonState>0);
     break;
     
   }
 }


Sad mi LED diode ostaju upaljene. Kako mogu da izmenim da LED bude upaljena samo dok je taster aktiviran?

Citat:
bogdan.kecman: 1024/5*3.401i6.5248

10% gore (posto imas toleranciju na oba otpornika po 5%) = 766
10% dole = 626

dakle za taj taster je 626-766 opseg koji moze da bude na A0 pinu

mnogo ti je 100k u jednoj grani suvise ce ti biti blizu svi ostali, 10k
je mnogo bolja vrednost


Hvala na pomoci uradio sam ovo isto samo nisam stavio za oba otpornika po 5%.
Jos jednom Hvala
Citat:
ZAS011: Da ti bude lakše: http://www.raltron.com/cust/tools/voltage_divider.asp

Što ne znači da mora da naučiš neke osnovne stvari SA RAZUMEVANJEM :)

Hvala na pomoci

Da li mozes da mi postavis neki jednostavan zadatak da probam sam da smislim kod i da probam u simulatoru.

Ako neko ima vremena neka zada neku Vezbu da probam.
Dejan Ranisavljevic

 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15718
*.dynamic.sbb.rs.

Sajt: mysql.rs


+2352 Profil

icon Re: Arduino UNO - pocetnik14.02.2015. u 15:26 - pre 95 meseci
tamo gde detektujes da nijedan taster nije pritisnut ugasi sve ledice
eto ti ga ultra jednostavan zadatak :D
 
Odgovor na temu

ZAS011
Uzgajivač šargarepe izakuće
Vanuatu

Član broj: 288510
Poruke: 4494

ICQ: 8713400
Sajt: www.justfuckinggoogleit.c..


+523 Profil

icon Re: Arduino UNO - pocetnik14.02.2015. u 15:46 - pre 95 meseci
Preduhitrio me Bogdan
To je bio zadatak koji bih ti i ja dao.
--
Make no mistake between my personality and my attitude.
My personality is who I am.
My attitude depends on who you are.
 
Odgovor na temu

uros2002
Dejan Ranisavljevic
Dobanovci

Član broj: 133852
Poruke: 119
*.dynamic.isp.telekom.rs.



Profil

icon Re: Arduino UNO - pocetnik14.02.2015. u 16:55 - pre 95 meseci
Mislim da sam nasao gde detektuje tastere.
Citat:
....
void loop() {
// read the state of the switch into a local variable:

int tmpButtonState = LOW; // the current reading from the input pin
int reading = analogRead(buttonPin);

if(reading>BUTTON5LOW && reading<BUTTON5HIGH){
//Read switch 5
tmpButtonState = BUTTON5;
}else if(reading>BUTTON4LOW && reading<BUTTON4HIGH){
//Read switch 4
tmpButtonState = BUTTON4;
}else if(reading>BUTTON3LOW && reading<BUTTON3HIGH){
//Read switch 3
tmpButtonState = BUTTON3;
}else if(reading>BUTTON2LOW && reading<BUTTON2HIGH){
//Read switch 2
tmpButtonState = BUTTON2;
}else if(reading>BUTTON1LOW && reading<BUTTON1HIGH){
//Read switch 1
tmpButtonState = BUTTON1;
}else{
//No button is pressed;
tmpButtonState = LOW;
}
....


Ali nisam nasao resenje za gasenje Ledica kada pustim taster

Ako dobro razumem ovaj deo koda
Citat:
...
if(reading>BUTTON5LOW && reading<BUTTON5HIGH){
//Read switch 5
tmpButtonState = BUTTON5;....


Ovde kaze ako sam razumeo:
Procitana vrednost manja od definisane LOW za taster 5 i procitana vrednost vecaod definisane HIGH za taster 5
Taster 5 aktiviran pali LED5

Ocitana vrednost je izmedju
Citat:
....
const int BUTTON5LOW = 100;
const int BUTTON5HIGH = 122;
.....


Po mom misljenju na kraju ovih IF i ELSE treba da dodam nesto sto ce ugasi LED ako nije aktiviran niti jedan taster.
ili da dodam komandu
Citat:
delay(1000)

da Led bude upaljena recimo 1s
Nadam se da sam na pravom putu.

Hvala (Trazim dalje)

Dejan Ranisavljevic

 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15718
*.com
Via: [es] mailing liste

Sajt: mysql.rs


+2352 Profil

icon Re: Arduino UNO - pocetnik14.02.2015. u 18:44 - pre 95 meseci
imas komentar gde pise "nijeda taster nije pritisnut" tamo gde detektuje
da nijedan taster nije pritisnut
 
Odgovor na temu

uros2002
Dejan Ranisavljevic
Dobanovci

Član broj: 133852
Poruke: 119
*.dynamic.isp.telekom.rs.



Profil

icon Re: Arduino UNO - pocetnik14.02.2015. u 18:55 - pre 95 meseci
To je mislim ovo
Citat:
....
}else{
//No button is pressed;
tmpButtonState = LOW;
.....


Samo neznma sta da dodam

Dejan Ranisavljevic

 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15718
*.com
Via: [es] mailing liste

Sajt: mysql.rs


+2352 Profil

icon Re: Arduino UNO - pocetnik14.02.2015. u 19:01 - pre 95 meseci
jbg, zas ti je rekao da prvo napises program koji upali i ugasi diodu
(blink), da si to uradio sada bi znao kako da ugasis diode
 
Odgovor na temu

[es] :: Elektronika :: Mikrokontroleri :: Arduino UNO - pocetnik

Strane: 1 2

[ Pregleda: 10064 | Odgovora: 35 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.