Stránka 1 z 2

expected constructor

Napsal: 07 čer 2020, 15:24
od gaara
Dobrý den,

dělám program pro regulaci jasu páté led (s dalšími čtyřmi se budou dít jiné věci)
a hlásí mi to chybu, prosím o pomoc.

Děkuji

Re: expected constructor

Napsal: 07 čer 2020, 15:56
od RomanB
Problém je o 2 řádky níže.
int led= ?;

Re: expected constructor

Napsal: 07 čer 2020, 18:21
od gaara
Opravila jsem, nepomohlo :oops:

Re: expected constructor

Napsal: 07 čer 2020, 18:54
od Hanz
vkládej kod pomocí </> , nemusí se přepisovat ,jednoduše se překopíruje do IDE, kde se zkompiluje atd. ;)

Re: expected constructor

Napsal: 07 čer 2020, 19:21
od gilhad
Řekl bych, že ten označený řádek pokládáš (mylně) za příkaz k nastavení nějakého modu pinu nanějakou hodnotu (a ty nad ním taky).

Ovšem protože ten řádek není v nějaké funkci (kde by to příkaz bát mohl), ale zcela mimo funkce, tak se jedná o nějakou deklaraci, (ke které chybí definice a navíc je nejspíš syntakticky nesprávná), tedy o něco zcela jiného, než co by sis přála. (Ano ještě by mohl být při trochu jiném zápisu inicializační hodnotou nějaké proměnné či konstanty, eventuálně tělem makra, ale ani to nejspíš není něco, co by sis přála. - problém je, že překladač nebere ohled na to, co by sis přála, ale dělá doslovně co mu napíšeš a pokud to proveditelné není, tak to hlásí jako chybu)

Pokud chceš nastavit mod nějakého pinu jednou, při startu, tak to volej z funkce setup, pokud ho chceš nastavit při kažbém průchodu, tak z funkce loop. Pokud chceš mít ta nastavení bokem, tak je měj v nějaké funkci, kterou pak zavoláš z vhodného místa.

Re: expected constructor

Napsal: 08 čer 2020, 11:00
od gaara
<//tady je zapnutí/vypnutí ledek!
const int LED1 = 10; // Přiřadí konstantu LEDKA číslu 2
const int LED2 = 10;
const int LED3 = 10;
const int LED4 = 10;
int LED5 = 10;
int INPRIKAZ;


//tady je regulace jasu!
int led5 = 6; // pin, ke kterému je LED připojena
int brightness = 10; // jas LED

void setup() {
Serial.begin(9600);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);

}



void loop() {

//zvýšení snížení jasu páté led!
// Sleduje, zda-li přicházejí na sérivoé lince nějaká data:
if (Serial.available() > 0) {
// Pokud přicházení na sériové lince data, uloží je do proměnné INPRIKAZ:
INPRIKAZ = Serial.read();

if (INPRIKAZ == '+') {
digitalWrite(LED5, brightness +5);

}

else (INPRIKAZ == '-'); {
digitalWrite(LED5, brightness -5);

}
}
}
>


Tak jo, teď už mi to žádné chyby nehlásí, nicméně teď už to nefunguje :lol:
Myslím že problém bude s tím pinem jak bylo řečeno. Já prostě chtěla nastavit čísla ledek k číslům pinu, a poté upravovat jas páté led (na pinu 6)

Re: expected constructor

Napsal: 08 čer 2020, 11:24
od AstroMiK
V názvech konstant a proměnných záleží na velikosti písmen.
Takže proměnná 'LED5' je něco úplně jiného, než 'led5'.

Re: expected constructor

Napsal: 08 čer 2020, 11:30
od Hanz
Myslím že problém bude s tím pinem jak bylo řečeno. Já prostě chtěla nastavit čísla ledek k číslům pinu, a poté upravovat jas páté led (na pinu 6)
čísla pinu máš pro všechny LED stejné tj. 10
mělo by to vypadat nějak takto :

Kód: Vybrat vše

 int LED1 = 2; // číslo pinu 1 led 
 int LED2 = 3; // číslo pinu 2 led 
 int LED3 = 4; // číslo pinu 3 led 
 int LED4 = 5; // číslo pinu 4 led 
 int LED5 = 6; // číslo pinu 5 led 
a tady je jak vypadá regulace ( úprava jasu ) jedné ledky
https://arduino.cz/arduino-zaklady-6-zhasinani/
mělo by ti to napovědět

Re: expected constructor

Napsal: 08 čer 2020, 12:03
od gaara
//tady je zapnutí/vypnutí ledek!
int INPRIKAZ;


//tady je regulace jasu!
int LED5 = 6; // pin, ke kterému je LED připojena
int brightness = 0; // jas LED
int fadeAmount = 20;

void setup() {
Serial.begin(9600);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
}

void loop() {

//zvýšení snížení jasu páté led!
if (Serial.available() > 0) {
// Pokud přicházení na sériové lince data, uloží je do proměnné INPRIKAZ:
INPRIKAZ = Serial.read();

if (INPRIKAZ == '+') {
analogWrite(6, brightness+5);

}

if (INPRIKAZ == '-'); {
analogWrite(6, brightness-5);

}
}
}



Momentálně je tedy problém s tím, že když do seriového monitoru napíšu "+", ledka se zapne, ale když to napíšu znova, nepřidá na jasu.
"-" nefunguje vůbec

Re: expected constructor

Napsal: 08 čer 2020, 12:28
od AstroMiK
Pro opakované přidávání a ubírání by bylo nutné měnit samotnou proměnnou 'brightness'

Takže ty podmínky by vypadaly nějak takto:

Kód: Vybrat vše

if (INPRIKAZ == '+')
  {
    brightness= brightness + 5;
    analogWrite(6, brightness);
  } 
Po překročení minima nebo maxima to udělá něco "nečekaného" (bylo by pak třeba ještě testovat překročení krajních mezí)

Mimochodem, asi bych ještě změnil typ té proměnné 'INPRIKAZ' z původního int na char.
Nemám to teď na čem vyzkoušet, ale možná by s tím mohly být problémy.

A ještě jedna drobnost - člověk vnímá jas logaritmicky, takže bude vidět hodně velká změna jasu LED mezi brightness 5 a 10, ale téměř neznatelná mezi brightness 250 a 255.