ARDUINO sumnjivo ponasanje

Programi za crtanje shema i pločica, simuliranje el. sklopova, savjeti. Diskusija o ostalim programima vezanim za elektroniku.

Moderators: pedja089, stojke369, [eDo], trax

Post Reply
Cracky
Pocetnik na forumu
Pocetnik na forumu
Posts: 31
Joined: 25-03-2014, 10:25

ARDUINO sumnjivo ponasanje

Post by Cracky »

Pozdrav :)

obicno kad neko eksperimentise sa necim i kad mu to nesto proradi, covek bude zaokupljen time sto je stvar proradila i ne gleda na to - kako radi. Kod mene to nije slucaj i necu da izostavim nesto, pa zelim da resim sledeci (moguci) problem:

imam cetiri dugmeta na daljinskom, za sad (radi probanja) palim/gasim obican laser modul.

Sledeci kod je za dugme B, koje dok drzim pritisnuto - laser svetli - kad pustim - laser se iskljuci:

Code: Select all

if (buttonB > sig) {
      digitalWrite(laser, HIGH);
    
  }       else {
      digitalWrite(laser, LOW);
     
    } 
( sig je definisan kao nula 0 )

evo mog problema sa dugmetom A:

Code: Select all

if (buttonA > sig) {

      digitalWrite(laser, HIGH);
    
  }
Kod dugmeta B laser svetli normalnog intenziteta. Kod dugmeta A laser svetli za otprilike 25% slabije.
Posto ima razlike u intenzitetu, bojim se da ne podrndam celinu u buducnosti, zamolio bih nekog da mi objasni zasto je to tako - i - da li je u redu da recimo ubuduce dugmice programiram kao dugme A (jer prevashodno stedim memoriju) ili da to bude jasno definisano kao sa dugmetom B?

- misljenja sam da to sto svetli slabije, ima veze sa brojem proveravanja, pa ne dobija konstanti signal pa trepce ali toliko brzo da se cini da radi slabije....

hvala :)
User avatar
Black
Odlično uznapredovao
Odlično uznapredovao
Posts: 981
Joined: 17-12-2008, 15:44

Re: ARDUINO sumnjivo ponasanje

Post by Black »

Ajd zaljepi čitav kod, nesviđa mi se način na koji si ovaj pisao. Zašto štediš memoriju?
Spajaš lasere direktno na arduino pin? koliko laser vuče struje?
Cracky
Pocetnik na forumu
Pocetnik na forumu
Posts: 31
Joined: 25-03-2014, 10:25

Re: ARDUINO sumnjivo ponasanje

Post by Cracky »

Black wrote:Ajd zaljepi čitav kod, nesviđa mi se način na koji si ovaj pisao. Zašto štediš memoriju?
Spajaš lasere direktno na arduino pin? koliko laser vuče struje?

Laser je na pinu direktno, 5v vuce...

evo videa da vidis o cemu se tacno radi:

Code: Select all

https://youtu.be/jQycVQ8KlZ8
A evo i koda:

Code: Select all

int D0 = 2;
int D1 = 3;
int D2 = 4;
int D3 = 5;
int VT = 6;
int laser = 7;
int sig = 0;


void setup() {

  Serial.begin(9600);
  // inputi
  pinMode(D0, INPUT);
  pinMode(D1, INPUT);
  pinMode(D2, INPUT);
  pinMode(D3, INPUT);
  pinMode(VT, INPUT);
  pinMode(D0, INPUT);
  pinMode (laser, OUTPUT);     
}


void loop() {

  int buttonB = digitalRead(D0);
  int buttonD = digitalRead(D1);
  int buttonA = digitalRead(D2);
  int buttonC = digitalRead(D3);
  int PinStateVT = digitalRead(VT);

if (buttonA > sig) {

      digitalWrite(laser, HIGH);
    
  }


if (buttonB > sig) {
      digitalWrite(laser, HIGH);
    
  }       else {
      digitalWrite(laser, LOW);
     
    } 

}
 

Hvala ti veliko :)
Maki
Odlično uznapredovao
Odlično uznapredovao
Posts: 766
Joined: 02-07-2012, 12:54

Re: ARDUINO sumnjivo ponasanje

Post by Maki »

Imas kak bi rekli jedan bug u kodu.
Naime recimo da je ispunjen uvijet A za prvi if te on upali laser. Potom dode drugi if i ako (else) nije ispunjen, a uzet cemo da nije, gasi laser. I tako u krug. Zbog toga se laser stalno pali i gasi pa imas dojam slabijeg inteziteta. Makni prvi if i sve bu ok.
Inace prvi if bez elsa nemre gasit laser stoga je drugi if bolja solucija jer ako nije pritisnuto tipkalo odradi else te ugasi laser. U suprotnom ak je uvijet ispunjen upali laser.
Zakomplicirah ga skroz na skroz...
User avatar
Black
Odlično uznapredovao
Odlično uznapredovao
Posts: 981
Joined: 17-12-2008, 15:44

Re: ARDUINO sumnjivo ponasanje

Post by Black »

Ja bi to ovako odradio

Code: Select all


while(digitalRead(D0)==HIGH)
{
digitalWrite(laser,HIGH);
}
digitalWrite(laser,LOW);
while(digitalRead(D1)==HIGH)
{
digitalWrite(laser,HIGH);
}
digitalWrite(laser,LOW);


I tako za ostala dva dugmića

A ovo možeš izbacit

Code: Select all

pinMode(D0, INPUT);
  pinMode(D1, INPUT);
  pinMode(D2, INPUT);
  pinMode(D3, INPUT);
  pinMode(VT, INPUT);
  pinMode(D0, INPUT);
  pinMode (laser, OUTPUT); 
Cracky
Pocetnik na forumu
Pocetnik na forumu
Posts: 31
Joined: 25-03-2014, 10:25

Re: ARDUINO sumnjivo ponasanje

Post by Cracky »

Hvala obojici na pomoci, ici cu u tom smeru =o)
User avatar
Black
Odlično uznapredovao
Odlično uznapredovao
Posts: 981
Joined: 17-12-2008, 15:44

Re: ARDUINO sumnjivo ponasanje

Post by Black »

Uhh zeznuo sam ne izbacit ovo pin mode, to ostavi nego ono što si pravio variable buttonread
Cracky
Pocetnik na forumu
Pocetnik na forumu
Posts: 31
Joined: 25-03-2014, 10:25

Re: ARDUINO sumnjivo ponasanje

Post by Cracky »

Black wrote:Uhh zeznuo sam ne izbacit ovo pin mode, to ostavi nego ono što si pravio variable buttonread
yup, radi besprekorno :) Hvala puno :)
Cvik_Dasa
Napredujem
Napredujem
Posts: 157
Joined: 23-11-2010, 05:13

Re: ARDUINO sumnjivo ponasanje

Post by Cvik_Dasa »

možda nešto jednostavnije ako će nekome trebat u budučnosti.

Code: Select all

If ((digitalRead(D0) == HIGH) || (digitalRead(D1)==HIGH)) {
digitalWrite(laser,HIGH);
}
else{
digitalWrite(laser,LOW);
}
While loop mi se ne sviđa jer će program cijelo vrijeme stajat na mjestu dok drži tipku stisnutu.
Post Reply