Program pre Arduino

Sekcia určená pre Arduino nadšencov

Moderátor: Moderátori

Používateľov profilový obrázok
budvar10
Pokročilý člen
Pokročilý člen
Príspevky: 989
Dátum registrácie: 15 Dec 2014, 10:55
Bydlisko: Košice

Re: Program pre Arduino

Príspevok od používateľa budvar10 » 29 Jún 2022, 16:45

Kód: Vybrať všetko

lcd.println(" C ");
Prečo println? LCD musíš premazávať alebo dopĺňať medzery podľa potreby. Lepšie je prepisovať medzerami z hľadiska rýchlosti zobrazovania.

Téma presunutá do správnej sekcie,presunul: 5.7.2022 mirosne
0

Používateľov profilový obrázok
McSmekac
Stály člen
Stály člen
Príspevky: 137
Dátum registrácie: 16 Sep 2020, 20:10

Re: Program pre Arduino

Príspevok od používateľa McSmekac » 18 Júl 2022, 09:36

Zdravím páni mám takíto program na senzor plynu. Chcem ale urobyť nejaké vylepšenie len neviem ako to napísať. Chcem aby keď zaznamená hodnotu od do napríklad od 20 do 50 rozsvieti jednu ledku bez bzučiaku. Viem že od do nejde ale píše sa to > ako niečo a zároveň < ako niečo .......ale potrebujem nejaký vzor.

Ďakujem

#include <MQUnifiedsensor.h>

#include <Buzzer.h>

int redLed = 12;
int greenLed = 13;
int buzzer = 2;
int smokeA0 = A0;
int sensorThres = 50;


void setup() {
pinMode(redLed, OUTPUT);
pinMode(greenLed, OUTPUT);
pinMode(buzzer, OUTPUT);
pinMode(smokeA0, INPUT);
Serial.begin(9600);
}

void loop() {
int analogSensor = analogRead(smokeA0);

Serial.print("senzor hodnota: ");
Serial.println(analogSensor);
delay(2000);
if (analogSensor > sensorThres)
{
digitalWrite(redLed, HIGH);
digitalWrite(greenLed, LOW);
tone(buzzer, 100, 1000);
}
else
{
digitalWrite(redLed, LOW);
digitalWrite(greenLed, HIGH);
noTone(buzzer);
}
delay(100);
}
0

miso156
Pokročilý člen
Pokročilý člen
Príspevky: 648
Dátum registrácie: 06 Dec 2020, 11:46
Bydlisko: Banska Stiavnica
Vek: 38

Re: Program pre Arduino

Príspevok od používateľa miso156 » 18 Júl 2022, 09:55

Napriklad:

if((analogSensor > 20) && (analogSensor < 50) ) {
//zapni jednu Led
//vypni bzuciak
}


"To iste" dosiahnes, ked pouzijes dva IF v sebe (vnorene).
0
"No pain, no gain." (KC238)

Používateľov profilový obrázok
budvar10
Pokročilý člen
Pokročilý člen
Príspevky: 989
Dátum registrácie: 15 Dec 2014, 10:55
Bydlisko: Košice

Re: Program pre Arduino

Príspevok od používateľa budvar10 » 18 Júl 2022, 16:21

Relational and comparison operators ( ==, !=, >, <, >=, <= )
https://cplusplus.com/doc/tutorial/operators/
0

Používateľov profilový obrázok
McSmekac
Stály člen
Stály člen
Príspevky: 137
Dátum registrácie: 16 Sep 2020, 20:10

Re: Program pre Arduino

Príspevok od používateľa McSmekac » 19 Júl 2022, 05:47

Ďakujem tie dva rovnake znaky v strede mi chýbali len som nevedel aký majú význam.
0

Používateľov profilový obrázok
McSmekac
Stály člen
Stály člen
Príspevky: 137
Dátum registrácie: 16 Sep 2020, 20:10

Re: Program pre Arduino

Príspevok od používateľa McSmekac » 10 Aug 2022, 06:23

Zdravím chlapci potrebujem zase poradiť dokúpil som ešte jeden senzor na CO2 mám všetko pozapájane ale neviem ako to mám napísať kedže stále mi vyhadzuje chybu hneď pod loopom kde načítávam obydva senzory. Skúšal som to aj inak s premennými ale všetko neúspech. chybové hláseie je
exit status 1
expected initializer before numeric constant


#include <MQUnifiedsensor.h>

#include <Buzzer.h>

int redLed1 = 13;
int greenLed1 = 12;
int redLed2 = 11;
int greenLed2 = 10;
int yellowLed3 = 9;
int buzzer = 6;
int smokeA0 = A0;
int smokeA1 = A1;



void setup() {
pinMode(redLed1, OUTPUT);
pinMode(greenLed1, OUTPUT);
pinMode(redLed2, OUTPUT);
pinMode(greenLed2, OUTPUT);
pinMode(yellowLed3, OUTPUT);
pinMode(buzzer, OUTPUT);
pinMode(smokeA0, INPUT);
pinMode(smokeA1, INPUT);
Serial.begin(9600);
}

void loop() {

int analogSensor = analogRead(smokeA1);
int analogSensor 2 = analogRead(smokeA0);

Serial.print("Hodnota CO2: ");
Serial.println(analogSensor);
Serial.print("Hodnota LPG: ");
Serial.println(analogSensor 2);
delay(2000);

if (analogSensor 2 > 50 )
{
digitalWrite(redLed1, HIGH);
digitalWrite(greenLed1, LOW);
tone(buzzer, 100, 1000);
}
else
{
digitalWrite(greenLed1, HIGH);
digitalWrite(redLed1, LOW);
noTone(buzzer);
}
if (analogSensor > 50 )
{
digitalWrite(redLed2, HIGH);
digitalWrite(greenLed2, LOW);
tone(buzzer, 100, 1000);
}
else
{
digitalWrite(greenLed2, HIGH);
digitalWrite(redLed2, LOW);
noTone(buzzer);
}
delay(100);
}
0

Používateľov profilový obrázok
budvar10
Pokročilý člen
Pokročilý člen
Príspevky: 989
Dátum registrácie: 15 Dec 2014, 10:55
Bydlisko: Košice

Re: Program pre Arduino

Príspevok od používateľa budvar10 » 10 Aug 2022, 07:21

Kód: Vybrať všetko

int analogSensor 2 = analogRead(smokeA0);
Prípustné označenie je analogSensor2, bez medzery, a tak aj ďalej v programe.
0

Používateľov profilový obrázok
McSmekac
Stály člen
Stály člen
Príspevky: 137
Dátum registrácie: 16 Sep 2020, 20:10

Re: Program pre Arduino

Príspevok od používateľa McSmekac » 19 Aug 2022, 11:14

Zdravím prečo mi vipisuje chybu na poslednom else?

#include <MQUnifiedsensor.h>

#include <Buzzer.h>

int redLed1 = 13;
int greenLed1 = 12;
int redLed2 = 11;
int greenLed2 = 10;
int yellowLed3 = 9;
int buzzer = 6;
int smokeA0 = A0;
int smokeA1 = A1;



void setup() {
pinMode(redLed1, OUTPUT);
pinMode(greenLed1, OUTPUT);
pinMode(redLed2, OUTPUT);
pinMode(greenLed2, OUTPUT);
pinMode(yellowLed3, OUTPUT);
pinMode(buzzer, OUTPUT);
pinMode(smokeA0, INPUT);
pinMode(smokeA1, INPUT);
Serial.begin(9600);
}

void loop() {

int analogSensor = analogRead(smokeA0);
int analogSensor1 = analogRead(smokeA1);

Serial.print("Hodnota CO2: ");
Serial.println(analogSensor);
Serial.print("Hodnota LPG: ");
Serial.println(analogSensor1);
delay(2000);

if (analogSensor > 40 )
{
digitalWrite(redLed1, HIGH);
digitalWrite(greenLed1, LOW);
}
else
{
digitalWrite(greenLed1, HIGH);
digitalWrite(redLed1, LOW);
}
if (analogSensor1 > 70 )
{
digitalWrite(redLed2, HIGH);
digitalWrite(greenLed2, LOW);
}
else
{
digitalWrite(greenLed2, HIGH);
digitalWrite(redLed2, LOW);
}
if (redLed1 HIGH);
{
tone(buzzer, 100, 1000);
}
else if (redLed2, HIGH);
{
tone(buzzer, 100, 1000);
}
else if (redLed1, HIGH);
(redLed2, HIGH);
{
tone(buzzer, 100, 1000);
}
else
{
noTone(buzzer);
}
delay(100);
}
0

Používateľov profilový obrázok
balu
Pokročilý člen
Pokročilý člen
Príspevky: 540
Dátum registrácie: 21 Feb 2022, 12:06

Re: Program pre Arduino

Príspevok od používateľa balu » 19 Aug 2022, 12:39

Jenom v tom posledním else ? Těch chyb je tam mraky :

if (redLed1 HIGH); -> (redLed1 HIGH) - co je to za podmínku ?

else if (redLed2, HIGH); -> (redLed2, HIGH) - co je to za podmínku ?

else if (redLed1, HIGH); -> (redLed1, HIGH) - co je to za podmínku ?

(redLed2, HIGH); -> (redLed1 HIGH) - co je to za příkaz ?

Nehledě k tomu, že ";" ukončuje příkaz, takže
if ( podmínka ); neudělá nikdy nic, protože nenásleduje žádný příkaz.

Přepiš si ten program nějak takhle i kdybys tam měl jen jeden jediný příkaz :

Kód: Vybrať všetko

if (podmínka)
{
    příkaz(y);
}

Kód: Vybrať všetko

if (podmínka)
{
    příkaz(y);
}
else
{
    příkaz(y);
}

Kód: Vybrať všetko

if (podmínka)
{
    příkaz(y);
}
else
{
    if (podmínka)
    {
        příkaz(y);
    }
    else
    {
        příkaz(y);
    }
}
0

pocitujlasku
Ultimate člen
Ultimate člen
Príspevky: 6205
Dátum registrácie: 20 Júl 2007, 00:00
Vek: 41

Re: Program pre Arduino

Príspevok od používateľa pocitujlasku » 19 Aug 2022, 12:55

za delay 2000:

Kód: Vybrať všetko

  bool s40 = (analogSensor > 40);
  bool s70 = (analogSensor > 70);


  digitalWrite(redLed1,   s40?HIGH:LOW);
  digitalWrite(greenLed1, s40?LOW:HIGH);
  
  digitalWrite(redLed2,   s70?HIGH:LOW);
  digitalWrite(greenLed2, s70?LOW:HIGH);

  if (s40 || s70) {
    tone(buzzer, 100, 1000);
  }
  else {
    noTone(buzzer);
  }
ale aj tak ten delay(100) a delay(2000) odtial vyhodit, lebo to ti komplet zastavi program na ten dany cas.
0
Jedním z největších projevů nedůvěry v Boha je hromosvod na kostele.

Používateľov profilový obrázok
McSmekac
Stály člen
Stály člen
Príspevky: 137
Dátum registrácie: 16 Sep 2020, 20:10

Re: Program pre Arduino

Príspevok od používateľa McSmekac » 22 Aug 2022, 06:22

ja som to chcel spravit ze ak zapne danu ledku zapne bzuciak a to su moznosti ked zape jednu druhu alebo obydve naraz
0

pocitujlasku
Ultimate člen
Ultimate člen
Príspevky: 6205
Dátum registrácie: 20 Júl 2007, 00:00
Vek: 41

Re: Program pre Arduino

Príspevok od používateľa pocitujlasku » 22 Aug 2022, 06:43

ved je tam ta ista podmienka, ako pre ledku. takze ked svieti cervena led, tak pipa
0
Jedním z největších projevů nedůvěry v Boha je hromosvod na kostele.

Používateľov profilový obrázok
McSmekac
Stály člen
Stály člen
Príspevky: 137
Dátum registrácie: 16 Sep 2020, 20:10

Re: Program pre Arduino

Príspevok od používateľa McSmekac » 24 Aug 2022, 12:49

funguje to len prosím ťa mohol by si mi vysvetliť toto? Nechápem tomu kedže tieto znaky som v programe ešte nepoužil. Myslím ? : ||

digitalWrite(redLed1, s1?HIGH:LOW);
digitalWrite(greenLed1, s1?LOW:HIGH);

digitalWrite(redLed2, s2?HIGH:LOW);
digitalWrite(greenLed2, s2?LOW:HIGH);

if (s1 || s2) {
0

miso156
Pokročilý člen
Pokročilý člen
Príspevky: 648
Dátum registrácie: 06 Dec 2020, 11:46
Bydlisko: Banska Stiavnica
Vek: 38

Re: Program pre Arduino

Príspevok od používateľa miso156 » 24 Aug 2022, 13:19

|| je logicky OR. Staci ze jedna z podmienok v if je splnena a if sa "vykona".
V tomto pripade sa if vykona ak S1 alebo S2 je nenulove, alebo True (v pripade boolean).
0
"No pain, no gain." (KC238)

maskrtnik01
Ultimate člen
Ultimate člen
Príspevky: 2574
Dátum registrácie: 20 Júl 2010, 00:00
Bydlisko: okolie KE
Vek: 27

Re: Program pre Arduino

Príspevok od používateľa maskrtnik01 » 24 Aug 2022, 13:50

s1 ? HIGH : LOW

Je takzvaný ternárny operátor. Prvá časť pred ? je podmienka. Ak je pravdivá, použije sa hodnota medzi ? a : . Ak nie, použije sa hodnota za : .

Predstavte si takúto funkciu:

Kód: Vybrať všetko

float ternary(bool condition, float a, float b)
{
  if(condition)
  {
    return a;
  }
  else
  {
    return b;
  }
}
0

Používateľov profilový obrázok
budvar10
Pokročilý člen
Pokročilý člen
Príspevky: 989
Dátum registrácie: 15 Dec 2014, 10:55
Bydlisko: Košice

Re: Program pre Arduino

Príspevok od používateľa budvar10 » 24 Aug 2022, 14:54

Hmm..., Google "C ||", nefunguje?

Čo tak si prečítať nejaké základy o jazyku? Na internete je toho neúrekom, alebo stará dobrá kniha.
Odporúčam Brian W. Kernighan, Dennis M. Ritchie: Programovací jazyk C. Zoženieš ju aj 4e v nejakom antikvariáte. Naštuduješ si všetky tieto banality. Nebudeš musieť vypisovať každú prkotinu na fórum a čakať, kým niekto odpovie.
Takto sa naučíš "loviť ryby".

(Daj človeku rybu, nasýtiš ho na deň. Nauč ho loviť ryby, nasýtiš ho na celý život.)
0

romiadam
Ultimate člen
Ultimate člen
Príspevky: 4418
Dátum registrácie: 09 Apr 2008, 00:00
Bydlisko: Wicklow, Irsko
Vek: 47

Re: Program pre Arduino

Príspevok od používateľa romiadam » 24 Aug 2022, 15:33

Ja to tak tiez robim, google vsetko najde.
Ten internet je plny C - programovania.

Ale niekedy ked sa nevie pod akym heslom hladat tak je to rychlejsie tu.
0
Prepáčte mi za diakritiku a preklepy - väčšinou píšem z mobilu a ENG klavesnice.
(výroky nemenovaného člena fóra:) ...základy elektrotechniky ovládam dokonale, tak napr. taký tyristor neviem ako presne funguje

pocitujlasku
Ultimate člen
Ultimate člen
Príspevky: 6205
Dátum registrácie: 20 Júl 2007, 00:00
Vek: 41

Re: Program pre Arduino

Príspevok od používateľa pocitujlasku » 24 Aug 2022, 17:12

?: je skrateny zapis if then else.
pouziva sa, ak to potrebujes niekde vo vypise, nastavovani stavu.. kod je potom prehladnejsi.
vie to c, c#, javascript, php, python a dalsie jazyky.
0
Jedním z největších projevů nedůvěry v Boha je hromosvod na kostele.

Používateľov profilový obrázok
McSmekac
Stály člen
Stály člen
Príspevky: 137
Dátum registrácie: 16 Sep 2020, 20:10

Re: Program pre Arduino

Príspevok od používateľa McSmekac » 25 Aug 2022, 05:55

Ďakujem za odpovede.....ide o to že niekedy to lepšie pohopím keď to mám takto vysvetlené po lopate ako z odbornej literatury.
0

romiadam
Ultimate člen
Ultimate člen
Príspevky: 4418
Dátum registrácie: 09 Apr 2008, 00:00
Bydlisko: Wicklow, Irsko
Vek: 47

Re: Program pre Arduino

Príspevok od používateľa romiadam » 25 Aug 2022, 08:46

pocitujlasku napísal:
24 Aug 2022, 17:12
?: je skrateny zapis if then else.
pouziva sa, ak to potrebujes niekde vo vypise, nastavovani stavu.. kod je potom prehladnejsi.
vie to c, c#, javascript, php, python a dalsie jazyky.
Toto je moj problem s C.
clovek musi poznat vsetky triky a vsetky tie zdvojene identicke zapisy.
Bol lenivy zapisat a=a+1 tak vymyslel a++,
if ()
{
}
else
{
}
a vymyslel ?:

Asembler je v tomto vyborny. Jeden prikaz jedna instrukcia. Nic viac nic menej. Len bohuzial nie je taky pohodlny a rychly ako C. O matematickych operaciach uz ani nerozpravam.
0
Prepáčte mi za diakritiku a preklepy - väčšinou píšem z mobilu a ENG klavesnice.
(výroky nemenovaného člena fóra:) ...základy elektrotechniky ovládam dokonale, tak napr. taký tyristor neviem ako presne funguje

Napísať odpoveď
  • Podobné témy
    Odpovedí
    Zobrazení
    Posledný príspevok