Nejste přihlášen/a.
Dobrý večer. Potřeboval bych poradit s programem na řízení tvarovacího lisu na plasty v programu Arduino. Kod mám již hotový, ale hází mi to error, a já nevím proč. Byl bych moc vděčný, kdyby mi kdokoliv pomohl. V příloze posílám zadání a můj vypracovaný kod.
xx není deklarovaná v daném místě.
prostě proměnné ledka1 ledka2 překladač nezná, musíte je definovat/deklarovat
Podle mě to máte trochu zmatený
začal bych
#define ledka1 10
#define ledka2 11 // čísla si dejte podle připojení ledek
pokud to chcete mít jako proměnnou (podle mě netřeba) tak
uint8_t led1 = ledka1; //a podobně ale podle mě stačí ta definice pro preprocesor
A pak normálně použijete ledka1 ledka2 a preprocesor to nahradí těmi čísly, jakoby to tam bylo napsané. (Doporučuje se direktivy preprocesuru psát velkými písmeny, třeba LED1, ale neni to zákon a porušuje se to hodně často.)
Prošel jsem program a ještě bych definoval servo_pin namísto jeho ručního zápisu (nevadí, že se to použije jen pro metodu attach, definice propojení s hw tak budou v jednom místě; nevěřil byste jak šílené je hledat takové věci v celém programu pokud to z nějakého důvodu změníte).
Pak už jen takové formality, možná pro vaši aplikaci nedůležité, ale přecejeno mjsem zvyklí programovat real-time tak mě to upoutá.
Zvážil bych nutnost použití floating point aritmetiky (řádky 21 a 22). Nešlo by to normalizovat do nějakého celočíselného typu. (myslím, že celočíselné násobení nebo dělení bude vždy rychlejší (je to instrukce procesoru) než v plovoucí čárce (je emulované softwareově, avr nemá plovoucí čárku)).
Ten jmenovatel 1023 vychází z examplu AnalogRead.ino (ostatně jako ta floating point aritmetika), podle mě je to blbě a i studiem datasheetu jsem dospěl k tomu, že tam má být 1024 (platné hodnoty jsou od 0 do 1023 tedy 1024 hodnot, 1 krok je 1/1024*Vref, což je defaultně Vcc, které může být 5 a může být 4 a může být 5.06 a cokoliv jiného, zvlášť při napájení z ISB to bývá hodně pod 5V; jednou jsem si myslel, že měřím kolísání nějaké veličiny a zjistil jsem, že měřím koůísání napájecího napětí). S ohledem na zde řečené to neudělá tak velkou chybu (pod 1 promile), ale je dobré o tom vědět. Navíc 1024 se dělí lépe, snad i v plovoucí čárce (je to posun o 10 řádů).
Podívám se vám na to. Škoda, že jste ty hlášky neopsal. Je potřeba číst chybové hlášky, a někdy to chce vědět, co se za nima může skrývat. To je ta největší detektivka a většinou je to nějaká prkotina (nemluvím o takových jasných věcech jako chybí středník nebo neznámý symbol).
Zkusil jsem přepsat program tak, aby šel přeložit (což ještě neznamená, že bude pracovat správně, ale hlavně že jde přeložit). Vyšel jsem z examplu pro servo. To je výhoda arduina, že pro všechno jsou nějaké odladěné a nějak funkční examply, i když jejich kvalita často nebývá nejlepší, je dobré, že je možné vyjít z něčeho, co chodí. Takové ty optimalizace, to už si každý udělá, pokud to má zapotřebí.
Tak nevím, jak je to s přílohama, nějak se mi ji nedaří sem dát.
Neneseme odpovědnost za správnost informací a za škodu vzniklou jejich využitím. Jednotlivé odpovědi vyjadřují názory jejich autorů a nemusí se shodovat s názorem provozovatele poradny Poradte.cz.
Používáním poradny vyjadřujete souhlas s personifikovanou reklamou, která pomáhá financovat tento server, děkujeme.