Strana 2 z 3

Re: Program pre Arduino

Napísané: 29 Jún 2022, 16:45
od používateľa budvar10

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

Re: Program pre Arduino

Napísané: 18 Júl 2022, 09:36
od používateľa McSmekac
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);
}

Re: Program pre Arduino

Napísané: 18 Júl 2022, 09:55
od používateľa miso156
Napriklad:

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


"To iste" dosiahnes, ked pouzijes dva IF v sebe (vnorene).

Re: Program pre Arduino

Napísané: 18 Júl 2022, 16:21
od používateľa budvar10
Relational and comparison operators ( ==, !=, >, <, >=, <= )
https://cplusplus.com/doc/tutorial/operators/

Re: Program pre Arduino

Napísané: 19 Júl 2022, 05:47
od používateľa McSmekac
Ďakujem tie dva rovnake znaky v strede mi chýbali len som nevedel aký majú význam.

Re: Program pre Arduino

Napísané: 10 Aug 2022, 06:23
od používateľa McSmekac
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);
}

Re: Program pre Arduino

Napísané: 10 Aug 2022, 07:21
od používateľa budvar10

Kód: Vybrať všetko

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

Re: Program pre Arduino

Napísané: 19 Aug 2022, 11:14
od používateľa McSmekac
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);
}

Re: Program pre Arduino

Napísané: 19 Aug 2022, 12:39
od používateľa balu
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);
    }
}

Re: Program pre Arduino

Napísané: 19 Aug 2022, 12:55
od používateľa pocitujlasku
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.

Re: Program pre Arduino

Napísané: 22 Aug 2022, 06:22
od používateľa McSmekac
ja som to chcel spravit ze ak zapne danu ledku zapne bzuciak a to su moznosti ked zape jednu druhu alebo obydve naraz

Re: Program pre Arduino

Napísané: 22 Aug 2022, 06:43
od používateľa pocitujlasku
ved je tam ta ista podmienka, ako pre ledku. takze ked svieti cervena led, tak pipa

Re: Program pre Arduino

Napísané: 24 Aug 2022, 12:49
od používateľa McSmekac
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) {

Re: Program pre Arduino

Napísané: 24 Aug 2022, 13:19
od používateľa miso156
|| 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).

Re: Program pre Arduino

Napísané: 24 Aug 2022, 13:50
od používateľa maskrtnik01
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;
  }
}

Re: Program pre Arduino

Napísané: 24 Aug 2022, 14:54
od používateľa budvar10
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.)

Re: Program pre Arduino

Napísané: 24 Aug 2022, 15:33
od používateľa romiadam
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.

Re: Program pre Arduino

Napísané: 24 Aug 2022, 17:12
od používateľa pocitujlasku
?: 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.

Re: Program pre Arduino

Napísané: 25 Aug 2022, 05:55
od používateľa McSmekac
Ď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.

Re: Program pre Arduino

Napísané: 25 Aug 2022, 08:46
od používateľa romiadam
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.