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

adriuno pomoc za puls

[es] :: Elektronika :: Mikrokontroleri :: adriuno pomoc za puls

[ Pregleda: 1957 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

joske10
Josic Milan
Petrovac na mlavi

Član broj: 103311
Poruke: 81
*.dynamic.isp.telekom.rs.

ICQ: 206


+1 Profil

icon adriuno pomoc za puls01.01.2014. u 22:59 - pre 124 meseci
Potrebna pomoc,
za adriuno
Program bi trebao da izgleda ovako
Na jednom pinu izlaz puls
da ima podesavanje vreme pauze. da se podesava od 1 milisekunde do jedne sekunde i vreme pulsa isto
znaci dva ili cetiri dugmeta i jedno za start/stop.
i ne bi bilo lose da ima prikaz vremena na lcd.
ja sam guglao danima li nisam naso ni jedan primer i nesto mi sve ne ide u glavu.
ako moze pomoc ili bar neki smer,ja nesto pokusavao ali ne ide mi od ruke

imam adriuno i onaj modul sa displejom i dugmadi,mislim da je sve sto treba za sada, naravano iz kine.

Joske
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

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

Sajt: mysql.rs


+2377 Profil

icon Re: adriuno pomoc za puls01.01.2014. u 23:06 - pre 124 meseci
1. da li si napisao obican program koji ispise bilo sta na tom display-u ?
2. da li si napisao obican program koji upali pa ugasi led ?
 
Odgovor na temu

joske10
Josic Milan
Petrovac na mlavi

Član broj: 103311
Poruke: 81
*.dynamic.isp.telekom.rs.

ICQ: 206


+1 Profil

icon Re: adriuno pomoc za puls02.01.2014. u 19:28 - pre 124 meseci
prosao sam primere,sa diodom i prekidacem i jos neke, nisam imao senzore da se igram sa njima
E sada kada sam probao da dodajem komandom ++ za svaki put me se povecavalo vreme od pretiskanja dugmeta,jer sam koristio delay
trebalo bi da napravim funkciju bar ja tako mislim
vrednost x = 1 ms high Y = 1ms low
i kada pretisnem dugme da dodaje na jedno ili drugo,ili oduzima
moze i da budu i cetiri dugmeta nije mi hardverski problem.
zbog gore navedenog problema sam razmisljao o dugmetu start stop.
Tako sam nekako zamislio. ne znam da li je to izvodljivo?

uspeo sam ispistati primer za lcd na displeju.
Joske
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

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

Sajt: mysql.rs


+2377 Profil

icon Re: adriuno pomoc za puls02.01.2014. u 19:32 - pre 124 meseci
ako umes da upalis i ugasis led, i ako umes da koristis delay() ne vidim
sta ti je problem da napravis da se menja duzina pulsa ... ubaci ovde
sta si uradio do sada i sta te zeza pa ce neko da ti pomogne, ovako bez
icega jedino da neko napise umesto tebe
 
Odgovor na temu

ZAS011
Uzgajivač šargarepe izakuće
Vanuatu

Član broj: 288510
Poruke: 4542

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


+529 Profil

icon Re: adriuno pomoc za puls02.01.2014. u 21:42 - pre 124 meseci
Mže i neko da napi$$$e umesto njega
--
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

joske10
Josic Milan
Petrovac na mlavi

Član broj: 103311
Poruke: 81
*.dynamic.isp.telekom.rs.

ICQ: 206


+1 Profil

icon Re: adriuno pomoc za puls02.01.2014. u 22:31 - pre 124 meseci

int led = 13;
int dugme = 12;
int dugme2 = 11;
int x;
int y;

void setup() {
pinMode(dugme,INPUT);
pinMode(dugme2,INPUT);
pinMode(led, OUTPUT);
Serial.begin(9600);
}


void loop() {
if (digitalRead (dugme) == HIGH);
x++;
{ if (digitalRead (dugme2) == HIGH);
y--;
Serial.println(x);
}
}

void start()
{
digitalWrite(led, HIGH);
delay(x);
digitalWrite(led, LOW);
delay(y);
}









ovo je moja neka zamisao ali ne moze biti dve void loop petlje.
i ovako broji sam i da ne pretisnem dugme.
ja sam pre nedelju dana odratio da dodaje a da ne broji sam ali mi se program sam usporavao pa sam popizdeo i izbrisao sve,e sada moze pomoc ili da preimenujem celi program. i da onaj deo za lcd mislim da mogu da dodam kasnije kao sto sam uradio za seriski monitor,to cu se snaci sam. probacu bar.
Joske
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

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

Sajt: mysql.rs


+2377 Profil

icon Re: adriuno pomoc za puls02.01.2014. u 23:17 - pre 124 meseci
prvo, kada stavljas source stavljaj ga u [ code ] tag tako da se sacuva tabulacija

drugo, nisi ti izleda savladao prve korake ..

svaki c/c++ program ima main funkciju koja je glavna funkcija u programu i koja poziva sve ostalo. kod arduino-a ona je sakrivena ali i dalje postoji i izgleda otprilike ovako:

Code:

int main(void){
  init();
  setup();
  while (1) loop();
  return 0;
}


init() funkcija je definisana u opisu hardwera i razlicita je u zavisnosti od toga sta odaberes kao board (kada pravis novi board ti moras da napises implementaciju za init) a od tebe kao arduino programera se ocekuje da implementiras setup() i loop(). setup ce biti (kao sto vidis u sorsu main-a) pozvan jednom i onda ce loop() biti pozivan u beskonacnoj petlji.

tvoj setup() deluje ok jedino ne kapiram cemu ti sluzi serial ovde posto ti za tvoj projekat i nije bas potreban no ne smeta

loop() funkcija kod tebe je malo nelogicna a kompletno sintaksno neispravna

Citat:

Code:

void loop() {
if (digitalRead (dugme) == HIGH);
x++;
{ if (digitalRead (dugme2) == HIGH);
y--;
Serial.println(x);
}




tackazarez posle if ce ti obezbediti da se NE DESI NISTA, potpuno je nebitno da li je high ili low ti neces uraditi nista. procitaj C/C++ sintaksu za IF. isti ti je problem u oba if-a (i za dugme i za dugme2).

stavljanje if dugme2 u dodatni blok je tek potpuno beskorisno, taj blok ne sluzi nicemu

i trece, cak i da se izbace ove sintaksne greske cemu ti sluzi Y ? povecavas X a smanjujes Y ?! valjda istu varijablu treba da povecas na jedno dugme a smanjis na drugo, a ne jednu povecavas a drugu smanjujes ...

i sad pazi trik pitanje, cemu sluzi start() funkcija?! ko je startuje? odakle? kada? cemu ?

ovo tvoje bi bilo zgodno odraditi sa interaptom, i to u interaptu citas tastere i u interaptu palis/gasis led .. al recimo da pisemo linearno za pocetnike to bi bilo nesto tipa

Code:

int led = 13;
int dugmeUpaljenoPlus = 12;
int dugmeUpaljenoMinus = 11;
int dugmeUgasenoPlus = 10;
int dugmeUgasenoMinus = 9;
int vremeUpaljeno;
int vremeUgaseno;


void setup() {
  pinMode(dugme,INPUT);
  pinMode(dugme2,INPUT);
  pinMode(led, OUTPUT);
  Serial.begin(9600);
  vreme = 0;
}

void loop() {
  if (digitalRead (dugmeUpaljenoPlus ) == HIGH) vremeUpaljeno++;
  if (digitalRead (dugmeUpaljenoMinus ) == HIGH) vremeUpaljeno--;
  if (digitalRead (dugmeUgasenoPlus ) == HIGH) vremeUgaseno++;
  if (digitalRead (dugmeUgasenoMinus ) == HIGH) vremeUgaseno--;

  digitalWrite(led, HIGH);
  delay(vremeUpaljeno);
  digitalWrite(led, LOW);
  delay(vremeUgaseno);

  Serial.print("Upaljeno: ");
  Serial.print(vremeUpaljeno);
  Serial.print(" Ugaseno: ");
  Serial.println(vremeUgaseno);
}


problem sa ovim pristupm je ako navrtis npr vreme na sekund, tek jednom u sekundi ce da ti dozvoli da promenis za 1 vreme ovo i ono .. dakle trebace ti cuku vremena da drzis dugme - da bi smanjio to sa 10sec recimo na 0.2sec ... zato rekoh bolje sa interaptom, tu ima sad druga, seljacka varijanta:

Code:

int led = 13;
int dugmeUpaljenoPlus = 12;
int dugmeUpaljenoMinus = 11;
int dugmeUgasenoPlus = 10;
int dugmeUgasenoMinus = 9;
int vremeUpaljeno;
int vremeUgaseno;
int i;

void setup() {
  pinMode(dugme,INPUT);
  pinMode(dugme2,INPUT);
  pinMode(led, OUTPUT);
  Serial.begin(9600);
  vreme = 0;
}

void loop() {

  digitalWrite(led, HIGH);
  for (i=0;i<vremeUpaljeno;i++){
    delay(1);
    if (digitalRead (dugmeUpaljenoPlus ) == HIGH) vremeUpaljeno++;
    if (digitalRead (dugmeUpaljenoMinus ) == HIGH) vremeUpaljeno--;
    if (digitalRead (dugmeUgasenoPlus ) == HIGH) vremeUgaseno++;
    if (digitalRead (dugmeUgasenoMinus ) == HIGH) vremeUgaseno--;
  }
  digitalWrite(led, LOW);
  for (i=0;i<vremeUgaseno;i++){
    delay(1);
    if (digitalRead (dugmeUpaljenoPlus ) == HIGH) vremeUpaljeno++;
    if (digitalRead (dugmeUpaljenoMinus ) == HIGH) vremeUpaljeno--;
    if (digitalRead (dugmeUgasenoPlus ) == HIGH) vremeUgaseno++;
    if (digitalRead (dugmeUgasenoMinus ) == HIGH) vremeUgaseno--;
  }

  Serial.print("Upaljeno: ");
  Serial.print(vremeUpaljeno);
  Serial.print(" Ugaseno: ");
  Serial.println(vremeUgaseno);
}


ovde na seljacki nacin umesto da uradis delay od 100ms npr ti uradis 100 puta delay od 1ms i svaki put na svakih 1ms ti uradis proveru dal su stisnuti tasteri.

obrati paznju da i jedna i druga varijanta nisu 100% tacne, dakle vremena ce realno biti uvek nesto preko zadatog vremena, dakle ako ti zadas 10ms to nece biti 10ms nego 10ms + 10x vreme da se izvrsi pozivanje digitalRead() uporedi izlaz .. jedini nacin da nemas tu gresku je da imas interapte... no to ostavljam tebi da napises, od mene dosta
 
Odgovor na temu

joske10
Josic Milan
Petrovac na mlavi

Član broj: 103311
Poruke: 81
*.dynamic.isp.telekom.rs.

ICQ: 206


+1 Profil

icon Re: adriuno pomoc za puls03.01.2014. u 22:47 - pre 124 meseci
sinoc sam napisao na brzaka jer sam zagubio bio moje pokusaje pa je bilo nepravilno.
e sada doradio kod

Code:

int led = 13;
int dugmeUpaljenoPlus = 12;
int dugmeUpaljenoMinus = 11;
int dugmeUgasenoPlus = 10;
int dugmeUgasenoMinus = 9;
int vremeUpaljeno;
int vremeUgaseno;


void setup() {
  pinMode(dugmeUpaljenoPlus,INPUT);
  pinMode(dugmeUpaljenoMinus,INPUT);
  pinMode(led, OUTPUT);
  Serial.begin(9600);
  vremeUpaljeno = 0;
}

void loop() {
  if (digitalRead (dugmeUpaljenoPlus ) == HIGH) vremeUpaljeno++;
  if (digitalRead (dugmeUpaljenoMinus ) == HIGH) vremeUpaljeno--;
  if (digitalRead (dugmeUgasenoPlus ) == HIGH) vremeUgaseno++;
  if (digitalRead (dugmeUgasenoMinus ) == HIGH) vremeUgaseno--;

  digitalWrite(led, HIGH);
  delay(vremeUpaljeno);
  digitalWrite(led, LOW);
  delay(vremeUgaseno);

  Serial.print("Upaljeno: ");
  Serial.print(vremeUpaljeno);
  Serial.print(" Ugaseno: ");
  Serial.println(vremeUgaseno);
}



serial je da vidim sta se desava untar programa da bi razumeo sta radim.
ubacim program i on sam broji i nema efekta kada radi,ne bitno dal ja pretisnem taster.
samo dva dugmeta koristim za pocetak kada resim dodacu i ostala dva. Tako mi je lakse,
dugme je povezano na pullup otpor 10 k,
to mi se i pre desavalo.


Joske
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

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

Sajt: mysql.rs


+2377 Profil

icon Re: adriuno pomoc za puls03.01.2014. u 23:00 - pre 124 meseci
Citat:
joske10
Code:

  if (digitalRead (dugmeUpaljenoPlus ) == HIGH) vremeUpaljeno++;

dugme je povezano na pullup otpor 10 k,


ako je input vezan na 10k pull up to znaci da je uvek high .. sto znaci da je taj if uvek tacan

po ovome kako pise u kodu tebi pin kontrolera treba da bude vezan sa 10k na gnd i preko tastera direktno na 5V



p.s. fali ti inicijalizacija za vremeUgaseno :)
Prikačeni fajlovi
 
Odgovor na temu

joske10
Josic Milan
Petrovac na mlavi

Član broj: 103311
Poruke: 81
*.dynamic.isp.telekom.rs.

ICQ: 206


+1 Profil

icon Re: adriuno pomoc za puls03.01.2014. u 23:12 - pre 124 meseci
Radi,greskom sa bio ubo na 3.3 pa nije radilo.
probao malo pre da okrenem i sa minus na plus,probacu sad da dodam sve na lcd, hvala na pomoci.
Joske
 
Odgovor na temu

joske10
Josic Milan
Petrovac na mlavi

Član broj: 103311
Poruke: 81
*.dynamic.isp.telekom.rs.

ICQ: 206


+1 Profil

icon Re: adriuno pomoc za puls03.01.2014. u 23:28 - pre 124 meseci
Code:




#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
int led = 13;
int dugmeUpaljenoPlus = 18;
int dugmeUpaljenoMinus = 19;
int dugmeUgasenoPlus = 20;
int dugmeUgasenoMinus = 21;
int vremeUpaljeno;
int vremeUgaseno;


void setup() {
  lcd.begin(16, 2);             
 lcd.setCursor(0,0);
 lcd.print("pritisni dugme");
  pinMode(dugmeUpaljenoPlus,INPUT);
  pinMode(dugmeUpaljenoMinus,INPUT);
  pinMode(led, OUTPUT);
  Serial.begin(9600);
  vremeUpaljeno = 0;
}

void loop() {
  if (digitalRead (dugmeUpaljenoPlus ) == HIGH) vremeUpaljeno++;
  if (digitalRead (dugmeUpaljenoMinus ) == HIGH) vremeUpaljeno--;
  if (digitalRead (dugmeUgasenoPlus ) == HIGH) vremeUgaseno++;
  if (digitalRead (dugmeUgasenoMinus ) == HIGH) vremeUgaseno--;

  digitalWrite(led, HIGH);
  delay(vremeUpaljeno);
  digitalWrite(led, LOW);
  delay(vremeUgaseno);

  Serial.print("Upaljeno: ");
  Serial.print(vremeUpaljeno);
  Serial.print(" Ugaseno: ");
  Serial.println(vremeUgaseno);
  
   lcd.setCursor(0,1); 
   lcd.print(vremeUpaljeno);
}



Radi i lcd ovo sam dodao na brzaka ali cu dodaditi sutra detaljno da dodam svu dugmad jer je bas kasno u svakom slucaju hvala gospodinu bogdanu na pomoci,
Joske
 
Odgovor na temu

joske10
Josic Milan
Petrovac na mlavi

Član broj: 103311
Poruke: 81
*.dynamic.isp.telekom.rs.

ICQ: 206


+1 Profil

icon Re: adriuno pomoc za puls05.01.2014. u 21:44 - pre 124 meseci
Code:
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
int led = 13;
int dugmeUpaljenoPlus = 14;
int dugmeUpaljenoMinus = 15;
int dugmeUgasenoPlus = 16;
int dugmeUgasenoMinus = 17;
int vremeUpaljeno;
int vremeUgaseno;


void setup() {
  lcd.begin(16, 2);             
 lcd.setCursor(0,0);
 lcd.print("Pritisni dugme");
  pinMode(dugmeUpaljenoPlus,INPUT);
  pinMode(dugmeUpaljenoMinus,INPUT);
  pinMode(dugmeUgasenoPlus,INPUT);
  pinMode(dugmeUgasenoMinus,INPUT);
  pinMode(led, OUTPUT);
  Serial.begin(9600);
  vremeUpaljeno = 0;
}

void loop() {
  if (digitalRead (dugmeUpaljenoPlus ) == HIGH) vremeUpaljeno++;
  if (digitalRead (dugmeUpaljenoMinus ) == HIGH) vremeUpaljeno--;
  if (digitalRead (dugmeUgasenoPlus ) == HIGH) vremeUgaseno++;
  if (digitalRead (dugmeUgasenoMinus ) == HIGH) vremeUgaseno--;

  digitalWrite(led, HIGH);
  delay(vremeUpaljeno);
  digitalWrite(led, LOW);
  delay(vremeUgaseno);

  Serial.print("Upaljeno: ");
  Serial.print(vremeUpaljeno);
  Serial.print(" Ugaseno: ");
  Serial.println(vremeUgaseno);
  
   lcd.clear();
  lcd.setCursor(0,0);
   lcd.print("Ugaseno");
    lcd.print(vremeUgaseno);
    lcd.setCursor(0,1);
    lcd.print("Upaljeno");
     lcd.print(vremeUpaljeno);
    
  }


Namestio sve
Radi,ispisuje na lcd. Imam malo nedostataka ali cu doraditi vremnom. :) hvala jos jednom.
Joske
 
Odgovor na temu

[es] :: Elektronika :: Mikrokontroleri :: adriuno pomoc za puls

[ Pregleda: 1957 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

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