millis mind idözitök...
Re: millis mind idözitök...
más!
egy #define meg lehet több értéket is egyszere ugyan ahoz az egy #define hoz?
pl
egy valtozo:
#define Pir3_en 9469960
több valtozoval de ugyanaz a definició?
#define Pir3_en 9469960 ,9469963, 12345678, 9876333
egy #define meg lehet több értéket is egyszere ugyan ahoz az egy #define hoz?
pl
egy valtozo:
#define Pir3_en 9469960
több valtozoval de ugyanaz a definició?
#define Pir3_en 9469960 ,9469963, 12345678, 9876333
Re: millis mind idözitök...
Nem.
Ugyanis 1 behelyettesítést tud alapesetben.
Ugyanis 1 behelyettesítést tud alapesetben.
http://www.tavir.hu - a gazda
Re: millis mind idözitök...
kösznöm!
akkor másal keresek hasonlo megoldast...
akkor másal keresek hasonlo megoldast...
Re: millis mind idözitök...
Kód: Egész kijelölése
//??? #define Pir3_en 9469960 ,9469963, 12345678, 9876333
//Ez már tömbe kel elhelyezni:
//Magyarázat:
//const = álandó értékek
//uint32_t = 32bites egész értékek
//[] = ismeretlen hosszú tömböt hozunk létre
//{} = jelek közötti értékekkel feltöltjük a tömböt. jelen esetben 4 érték került a tömbe.
//A tömb:
const uint32_t Pir3_en[] {9469960 ,9469963, 12345678, 9876333};
//ezután az egyes értékekre igy hivatkozhatunk
printf(Pir3_en[0]; // az első érték
printf(Pir3_en[3]; // az 4. érték
Re: millis mind idözitök...
köszönöm!kapu48 írta:Kód: Egész kijelölése
//??? #define Pir3_en 9469960 ,9469963, 12345678, 9876333 //Ez már tömbe kel elhelyezni: //Magyarázat: //const = álandó értékek //uint32_t = 32bites egész értékek //[] = ismeretlen hosszú tömböt hozunk létre //{} = jelek közötti értékekkel feltöltjük a tömböt. jelen esetben 4 érték került a tömbe. //A tömb: const uint32_t Pir3_en[] {9469960 ,9469963, 12345678, 9876333}; //ezután az egyes értékekre igy hivatkozhatunk printf(Pir3_en[0]; // az első érték printf(Pir3_en[3]; // az 4. érték
Re: millis mind idözitök...
Legyen itt multitaskos LED villogtató példa.
Ami nem használ delay-t és ráadásul, a millis() 5.nap túlcsordulás biztos.
ledBlinkNoDelay.ino
Különböző időzítések bombabiztos futás közbeni kezelésére!
Ami nem használ delay-t és ráadásul, a millis() 5.nap túlcsordulás biztos.
ledBlinkNoDelay.ino
Kód: Egész kijelölése
// ledBlinkNoDelay.ino
unsigned long currentMillis = 0;
unsigned long lastReadTime = 0; // utolsó olvasási idő
unsigned long intervallum = 1000; // intervallum
bool overflowing = 0; // Tulcsordulas jelzo
unsigned long currentMillis1 = 0;
unsigned long lastReadTime1 = 0; // utolsó olvasási idő
unsigned long intervallum1 = 1500; // intervallum
bool overflowing1 = 0; // Tulcsordulas jelzo
unsigned long counter = 0;
#define BUTTONPIN 3
#define LEDPIN 13
void setup() {
Serial.begin(9600);
pinMode(LEDPIN, OUTPUT);
// Start LED Blik
currentMillis = millis(); // Beolvassuk a jelenlegi idot
lastReadTime = currentMillis + intervallum; // Ha összeadás tulcsordul? az eredmény kissebb lesz!
if(lastReadTime < currentMillis) // Ha törtent tulcsordulas
{
overflowing = 1; // Tulcsordulas jelzot beállitjuk
}
}
void loop()
{
// A programuk fut a LED-ek a hatterben Villognak...
Serial.print(counter); // A monitoron: A számok futása szemlélteti a program futasat a haterben!
Serial.print(", ");
//...
// LED Bekapcsolo idözites figyeles
if(lastReadTime > 0) // ha idözites elvan inditva
{
// Ha Tulcsordulas jelzo bevan állitva és millis() > lastReadTime?
if(overflowing == 1 && millis() > lastReadTime) // Varunk a tulcsordulasra
{
// nem csinálunk semmit
}else // Ha millis() tulcsordulasa megtörtént
{
overflowing = 0; // Tulcsordulas jelzot töröljuk
if(millis() > lastReadTime) // megvarjuk ,hogy leteljen az idö
{
// Itt csinálunk valamit az idözitesben...
// ...
counter++;
Serial.println(". ");
Serial.print("LED BE: ");
digitalWrite(LEDPIN, 0);
lastReadTime = 0; // és töröljük az idözites kerestt
// elinditjuk a kikapcolás idözitest
currentMillis1 = millis(); // Beolvassuk a jelenlegi idot
lastReadTime1 = currentMillis1 + intervallum1; // Ha összeadás tulcsordul? az eredmény kissebb lesz!
if(lastReadTime1 < currentMillis1) // Ha törtent tulcsordulas
{
overflowing1 = 1; // Tulcsordulas jelzot beállitjuk
Serial.println("millis() Tulcsordulas jelzes!");
}
}
}
} // Itt az idözites figyeles vege
// LED Kikapcsolo idözites figyeles
if(lastReadTime1 > 0) // ha idözites elvan inditva
{
// Ha Tulcsordulas jelzo bevan állitva és millis() > lastReadTime?
if(overflowing1 == 1 && millis() > lastReadTime1) // Varunk a tulcsordulasra
{
// nem csinálunk semmit
}else // Ha millis() tulcsordulasa megtörtént
{
overflowing1 = 0; // Tulcsordulas jelzot töröljuk
if(millis() > lastReadTime1) // megvarjuk ,hogy leteljen az idö
{
// Itt csinálunk valamit az idözitesben...
// ...
counter++;
Serial.println(". ");
Serial.print("LED KI: ");
digitalWrite(LEDPIN, 1);
lastReadTime1 = 0; // és töröljük az idözites kerestt
// elinditjuk a Bekapcolás idözitest
currentMillis = millis(); // Beolvassuk a jelenlegi idot
lastReadTime = currentMillis + intervallum; // Ha összeadás tulcsordul? az eredmény kissebb lesz!
if(lastReadTime < currentMillis) // Ha törtent tulcsordulas
{
overflowing = 1; // Tulcsordulas jelzot beállitjuk
Serial.println("millis() Tulcsordulas jelzes!");
}
}
}
} // Itt az idözites figyeles vege
// ...
// delay(1000); // nem használunk delay-t!!! mert az mindent elront!
}