Hírek:

Fontos tudnivalók a migrációval kapcsolatban, kérlek olvasd el:

A régi fórumról áthozott hozzászólásoknál a felhasználó neve adatvédelmi megfontolásokból véletlenszerűen generált értékekre lett  lecserélve. Ez akkor tud a valódi értékre visszaállni, ha az adott felhasználó a régi fórumon nyilatkozik, hogy beleegyezik az adatainak az új fórumra továbbításához, majd ezután itt a régi felhasználónevével és email címével regisztrál.
8~20 óra között, 1~30 percen belül megtörténik a jóváhagyás, 30 percenként ellenőrizd email fiókodat (SPAM-ot is) mindenképp kapsz mail-t, a sikeres regisztrácioról, vagy a hibáról és, hogy mi a teendőd.
Nézd meg  "A régi fórumról, az új fórumra költözés útmutatót."
A régi fórumon használt email címmel de más felhasználói azonosítóval érkező regisztrációs kérelmek törlésre kerűlnek.

Main Menu

Arduino

Indította gaben, 2025 február 03, 18:09

Előző téma - Következő téma

000000000


000000000


000000000

Az alaplap ESP8266 D1



DS3132 VCC 3,3V

PIR HC505 VCC 5V (out)3,3v

led matrix max7219 vcc 3,3v (ha nem elég a fényerő) vcc 5v is lehet de spi logic level kell 5vto3,3v...[#vigyor]

Ezel a megoldással nem kell logic level illesztés d1 és fenti külsö modulok közé...

000000000

Az alap kodban arfolyam22_4.ino volt 2 hibba ezt javitsátok!
cserélni erre:
1 rész
-------

if ((now.minute() > 59)) { delay(1000); RTC_Update_NTP(); }

------------------------------------------------------------------
2 rész
------


void time_ds_print()  
{

 DateTime now = rtc.now();

    Serial.print("DS3231: ");
    Serial.print(now.year(), DEC);
    Serial.print('/');
    Serial.print(now.month(), DEC);
    Serial.print('/');
    Serial.print(now.day(), DEC);
    Serial.print(" (");
    Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
    Serial.print(") ");
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    Serial.print(now.second(), DEC);
    Serial.println();
   

String d2 (daysOfTheWeek[now.dayOfTheWeek()]);
String mh2 (monthOfTheWeek[now.month()]);


 now = rtc.now();
 char time_string[100];
 sprintf(time_string, "DS   %d.%s.%d  %s   %02d:%02d ",
          now.year(), mh2.c_str(),now.day(), d2.c_str(),
          now.hour(), now.minute());
         

 P.displayText(time_string, PA_CENTER, SCROLL_SPEED3, PAUSE_TIME3, PA_SCROLL_RIGHT ? PA_SCROLL_LEFT : PA_SCROLL_RIGHT);
 while (!P.displayAnimate()) {
  P.displayAnimate();
  ESP.wdtFeed();
  controlBR();
 
 
  }
--------------------------------------------------------------------------------


firmware lehet wifin is frisiteni egy web böngészön kell hozzá pc, android tel stb eszközön is!

http://ora ip cim/update
http://esp8266-webupdate.local/update "ez nem mindig müxik"!

arduino ide alat ki exprotálható a firmware bin sketch>>>>export compiled binary! :)

000000000

javitva..
if ((now.minute() > 58)) { delay(1000); RTC_Update_NTP(); }

laaci

Köszönöm.

000000000

böviteném a lenti orát de néha elég keserü tud leni ha elakad matek!

Mi a hiba: no matching function for call to 'Adafruit_BME280::readPressure(float&)'

void printValues() {
//String pre [bme.readPressure[SLpressure_mB]);
String pre (bme.readPressure(SLpressure_mB));
String temp (bme.readTemperature());
 
float SLpressure_mB = (((pressure * 100.0)/pow((1-((float)(ELEVATION))/44330), 5.255))/100.0);
 
P.setIntensity(1);
  char time_string[100];
 
 sprintf(time_string, "%d/*C        %d/mPa       ",temp.toInt(),pre.c_str());
  P.displayText(time_string, PA_CENTER, SCROLL_SPEED2, PAUSE_TIME3, PA_SCROLL_RIGHT ? PA_SCROLL_LEFT : PA_SCROLL_RIGHT);
 
 
  while (!P.displayAnimate()) {
  P.displayAnimate();
  ESP.wdtFeed();
   
}

dezsoe

A gugli szerint a ReadPressure-nek nincs paramétere csak visszatérési értéke:

float Adafruit_BME280::readPressure(void)

Forrás itt.

000000000

köszi probálom!

juhasz

Üdv. Az a problémám, hogy ha külső megszakításkezelést csinálok, nem működik az I2C 1602-es LCD.
Ez normális? Összeveszik valami valamivel? :)

frob

megszakítások érdekes dolgokat tudnak produkálni, talán úgy tudod csökkenteni a hibát, hogy ha a megszakításban csak jelző bitet állítasz, nem pedig benne futtatod le a mit le akarsz, hanem így átadod a fő proginak, így nem csúsznak el az időzítések...

juhasz

Ezt nem értem ám. [#nyes]
attachInterrupt(0, rpm, RISING),  ne hívjam meg az rpm függvényt?
Bár kicsit gyomláltam, sei és cli kikerült, most jól működik.

000000000

i2c 4bit modba használja lekérdezési idö mennyi?

frob

az interupt, az az megszakítás megjön, majd mindaddig míg innen ki nem esik a program, tehát valami bazi hosszú időigényes feladat fut végig, minden ÁLL!!!
ezért érdemes azt csinálni. hogy interuptban pl egy bool váltózó értéke lesz 1,
és a főprogiban pedig meghívod a függvényedet úgy hogy

if ( valtozo ==1){
a te függvényed;
valtozo=0;

}
a megszakítás így csak egy változót állít be, ami egy bool ráadásul, ami miután lefut a függvényed vissza is áll alapértékre várva a következőt
annyira rövid időre megakasztva a program futását amennyire csak lehet

tehát lényeg, interuptban nincs csak max 1 program sor, ami nem egy függvény hívás!! hanem csak egy jelzőbit állítása

juhasz

De a program fut, mert ha kapcsoltatok Pint és teszek rá ledet, annak szépen változik az állapota. Az is a loop-ban van.
A kijelző pedig le van fagyva. Ha ismét feltöltöm a vázlatot, akkor pedig minden jó. Resetre sem szokott helyre állni az lcd. Illetve feltöltéskor is van, hogy nem jó, de akkor le sem törli az lcd-t. Nem tudom érthető-e :D.
Szóval van, hogy már az elejétől nem működik a kijelző, nem változik rajta semmi, csak azt irja ami volt rajta, van amikor semmi baja. Amikor nem működik, akkor sem feltöltéskor sem resetre nem törlődik a kijelző.

Cree, csak műkedvelő vagyok, fogalmam nincs mennyi a lekérdezési idő. LiquidCrystal_I2C könyvtárat használom.