Torej podobno kot _FadeTime.VolkD je napisal/-a:Kje pa imaš definirano spremenljivko _FadeValue ?
Ta spremenljivka se nahaja v objektu LEDFadeCls in ni potrebe, da bi bila vsem vidna.
Moderator: tilz0R
Torej podobno kot _FadeTime.VolkD je napisal/-a:Kje pa imaš definirano spremenljivko _FadeValue ?
Ta spremenljivka se nahaja v objektu LEDFadeCls in ni potrebe, da bi bila vsem vidna.
#ifndef __LEDFADE_H__
#define __LEDFADE_H__
#include <stdint.h>
#include <Arduino.h>
#include "LED.h"
class LEDFadeCls : public LEDCls
{
public:
LEDFadeCls(uint8_t pin);
void Fade(uint32_t time);
virtual void Loop() override;
private:
uint32_t _FadeTime;
uint32_t _FadeValue;
uint32_t _FadeDir;
uint32_t Pin _;
};
#endif#include <stdint.h>
#include <Arduino.h>
#include "pins.h"
#include "LED.h"
#include "LEDBlink.h"
#include "LEDFade.h"
#include "main.h"
LEDBlinkCls _LED_R(PIN_LED_R);
LEDFadeCls _LED_G(PIN_LED_G);
LEDFadeCls _LED_B(PIN_LED_B);
void setup()
{
Serial.begin(115200);
_LED_R.begin();
_LED_G.begin();
_LED_B.begin();
_LED_R.Blink(500);
_LED_G.Fade(500);
_LED_B.Fade(500);
}
void loop()
{
_LED_R.Loop();
_LED_G.Loop();
_LED_B.Loop();
}
Kako da ne,....valter je napisal/-a:Kaj ni nobenega junaka?
sem pa LEDFade.cpp dal v napačno mapo..
#ifndef __LEDFade_h__
#define __LEDFade_h__
#include <stdint.h>
#include <Arduino.h>
#include "LED.h"
class LEDFadeCls : public LEDCls
{
public:
LEDFadeCls(uint8_t pin);
void Fade(uint32_t time);
virtual void Loop() override;
//void Loop();
private:
uint32_t _FadeTime;
uint8_t _FadeValue;
uint8_t _FadeDir;
uint8_t _Pin;
};
#endif
#include "DelayUtils.h"
#include "LEDFade.h"
LEDFadeCls::LEDFadeCls(uint8_t pin) :
LEDCls(pin),
_FadeTime(0),
_FadeValue(0),
_FadeDir(0)
{
}
void LEDFadeCls::Fade(uint32_t time)
{
_FadeTime = time * 1000 / 255;
_FadeValue = 0;
_FadeDir = +1;
_Time = DelayUtils::DelayInitUS();
}
void LEDFadeCls::Loop()
{
if (DelayUtils::DelayCheckUS(_Time, _FadeTime))
{
if (_FadeValue == 0)
_FadeDir = +1;
else if (_FadeValue == 255)
_FadeDir = -1;
_FadeValue += _FadeDir;
analogWrite(_Pin, _FadeValue);
}
}
Zanimivo. Dela vseeno tudi če v spremenljivko, ki je unsigned vpišemo -1.VolkD je napisal/-a:Za začetek,...
Za _Pin je vseeno ali potrebujemo predznak ali ne. Vrednosti tega polje tako in tako nikoli niso negativne . Prav tako ne potrebujemo vrednosti nad 127.
Kaj pa _FadeDir ?
Ja, seveda gre za interpretacijo, saj pri 0 ali pri +1 naj nebi bilo problemov. Ampak kaj če v unsigned spremenljivko vpišemo 128, potem jo pa uporabimo kot signed ?Kroko je napisal/-a:Seveda dela. Gre zgolj za interpretacijo bitov.
uint8_t a = 10;
uint16_t b;
b = a; //implicit cast
uint16_t a = 10;
uint8_t b;
b = a; //implicit cast - ampak to dobimo warning, da lahko pride do izgube podatkov. Žal arduino warningov ne pokaže
uint16_t a = 10;
uint8_t b;
b = (uint8_t )a; //explicit cast ("c" zapis)
uint16_t a = 10;
uint8_t b;
b = uint8_t (a); //explicit cast ("functional" zapis)
skat je napisal/-a:
Ampak način razmišljanja in elemente takega programiranja moram pa še prežvečit in prebavit, da pride v kri.
#include "DelayUtils.h"
#include "LEDFade.h"
LEDFadeCls::LEDFadeCls(uint8_t pin):
LEDCls(pin),
_FadeTime(0),
_FadeValue(0),
_FadeDir(0)
{
}
void LEDFadeCls::Fade(uint32_t time)
{
_FadeTime = time * 1000 / 255;
_FadeValue = 0;
_FadeDir = +1;
_Time = DelayUtils::DelayInitUS();
}
void LEDFadeCls::Loop() //override;
{
if (DelayUtils::DelayCheckUS(_Time, _FadeTime))
{
if (_FadeValue == 0)
_FadeDir = +1;
else if (_FadeValue == 255)
_FadeDir = -1;
_FadeValue += _FadeDir;
Set(_FadeValue);
// analogWrite(_Pin, _FadeValue); //ne dela in javi, da je "const uint8_t LEDCls::_Pin private in this context"
}
}
Kroko je napisal/-a:...Žal arduino warningov ne pokaže...
transalp je napisal/-a:Kroko, prosim te za pojasnilo...
class OsebaCls
{
public:
string Ime;
string Priimek;
protected:
string Hobi;
private:
string Pin;
}
#include "DelayUtils.h"
#include "LEDFade.h"
//konstruktor
LEDFadeCls::LEDFadeCls(uint8_t pin):
LEDCls(pin), //kličemo kar konstruktor starša
_FadeTime(0) //inicializacija (damo na 0)
{
}
void LEDFadeCls::Fade (uint32_t time)
{
_FadeTime = time * 1000 / 255;
_FadeValue=0;
_FadeDir=+1;
_Time=DelayUtils::DelayInitUS();
}
void LEDFadeCls::Loop() //override lastnosti iz LEDCls
{
if (DelayUtils::DelayCheckUS (_Time, _FadeTime))
{
if (_FadeValue == 0)
_FadeDir = +1;
else if (_FadeDir ==255)
_FadeDir =-1;
_FadeValue +=_FadeDir;
Set(_FadeValue); //pošlji nazaj v Set, ki je lastnost v LED.h
}
}
#ifndef __LEDFADE_H__
#define __LEDFADE_H__
#include <stdint.h>
#include <Arduino.h>
#include "LED.h" //obvezno includat.h starša, če hočemo uporabljati njegove lastnosti
//razred LEDFade izhaja iz razreda LED (public-> ker hočemo vse lastnosti razreda videti navzven)
class LEDFadeCls : public LEDCls
{
public:
LEDFadeCls(uint8_t pin); //konstruktor
void Fade(uint32_t time);
//virtualna funkcija, preglasimo njeno obnašanje, ki je definirano v starševskem .h
virtual void Loop() override;
private:
uint32_t _FadeTime;
uint8_t _FadeValue;
int8_t _FadeDir;
};
#endif // __LEDFADE_H__Serial.print(_FadeValue);Serial.begin(115200);#include "DelayUtils.h"
#include "LEDFade.h"
//konstruktor
LEDFadeCls::LEDFadeCls(uint8_t pin):
LEDCls(pin), //kličemo kar konstruktor starša
_FadeTime(0) //inicializacija (damo na 0)
{
}
void LEDFadeCls::Fade (uint32_t time)
{
_FadeTime = time * 1000 / 255;
_FadeValue=0;
_FadeDir=+1;
_Time=DelayUtils::DelayInitUS();
}
void LEDFadeCls::Loop() //override lastnosti iz LEDCls
{
if (DelayUtils::DelayCheckUS (_Time, _FadeTime))
{
if (_FadeValue == 0)
_FadeDir = +1;
else if (_FadeValue ==255)
_FadeDir =-1;
_FadeValue +=_FadeDir;
Set(_FadeValue); //pošlji nazaj v Set, ki je lastnost v LED.h
Serial.print(_FadeValue);
Serial.print('\n');
delay(10);
}
}
S55RU je napisal/-a:Hvala. Sem razmišljal malo drugače in poskušal uvoziti _FadeValue v main.cpp in od tam printati, pa sem imel same težave in sem obupal.

Kroko je napisal/-a:Verjetno bomo takrat prešli kar na ESP32. WiFi in modri zob se mi zdijo kulPa multicore procesor...
Bom še malo naštudiral kako to izvesti. Vi pa do takrat kakšen evro v štumf. Elektronika ni poceni. Hitro je 20-30 EUR, sploh če bomo imeli kakšno fino periferijo. TFT, kakšen senzor in pa JTAG debugiranje so skoraj nuja. Če ste za seveda.
Po forumu brska: 0 registriranih uporabnikov in 1 gost