- Radeon RX 9060 XT: Ezt aztán jól meghúzták
- Atomenergiával dübörögnek tovább az Amazon adatközpontok, SMR-ek is jöhetnek
- Macron betiltatná az EU-ban a közösségi médiát a 15 év alattiaknak
- Az NVIDIA ipari AI-felhőt épít a németeknek, együtt az OpenAI és a Google
- Két új Ryzen közül választhatnak a kézikonzolok
- AMD Navi Radeon™ RX 9xxx sorozat
- AMD vs. INTEL vs. NVIDIA
- HiFi műszaki szemmel - sztereó hangrendszerek
- Milyen belső merevlemezt vegyek?
- Melyik tápegységet vegyem?
- Milyen billentyűzetet vegyek?
- TCL LCD és LED TV-k
- NVIDIA GeForce RTX 3080 / 3090 / Ti (GA102)
- Radeon RX 9060 XT: Ezt aztán jól meghúzták
- ThinkPad (NEM IdeaPad)
-
PROHARDVER!
Arduino hardverrel és szoftverrel foglakozó téma. Minden mikrovezérlő ami arduinoval programozható, és minden arduino program, board, és hardverrel kapcsolatos kérdések helye.
Új hozzászólás Aktív témák
-
-
Wolfram
aktív tag
válasz
Janos250 #20494 üzenetére
Az antenna tényleg érdekesen néz ki.
Router mellé rakva sincs változás.A legelején kezdve:
Miért zakkan meg a serial monitor amikor bekapcsolom a debug módot (Core Debug Mode)?
Van valami trükk amivel életben lehet tartani a kimenetet?
Már pár sor is csoda, legtöbbször pár karakter után elhal az egész. -
válasz
Undoroid #20478 üzenetére
szégyen ide vagy oda- sohasem csináltam még ilyet...
Én sem ettem cseresznyét addig, amíg először nem ettem
Egy weboldalt kell hozzá összerakni, ha nem is csináltál még ilyet, azért ma már számtalan segítség van hozzá, akár wysiwyg szerkesztő programok. Itt a topikban is van sok példa, janos250 kolléga szokott volt ilyeneket megosztani, én is azzal kezdtem a legutóbbi projektemet.
-
Undoroid
őstag
válasz
its_grandpa #20473 üzenetére
Ezek szerint pont jó időben kérdeztem!
Feszültség osztó - Remek, ráadásul van ott még egy példa is a programjához! Ez igen!
Kijelző - Azért választottam a Nokiát, mert abból van itthon
" A mérés log-ot meg kiírod SPIFFS-be. " Erre rá kellett keresnem, mert ezek a rövidítések egy olyan kezdőnek, mint Én az 'Kínai' nyelven van!* * *
Aryes :
Nem is rossz ötlet ez a webes felület a kijelző helyett, de -szégyen ide vagy oda- sohasem csináltam még ilyet...
A grafikon azért lenne jobb erre a célra, mert nem a pontos értéket szeretném látni, hanem az időbeli ingadozásokat. Van egy olyan gyanúm, hogy az akkum elkezdett szulfátosodni.
-
válasz
Undoroid #20472 üzenetére
Ha kimondottan szeretnél rá kijelzőt l'art pour l'art, akkor jó a Nokia is, lehet rá grafikont is rajzolgatni, de teljesen felesleges. Inkább mondanám az ESP32-t, abban van RTC is, nem kell külön venni, netre kötve az órát szinkronizálni lehet, és olyan csillivilli webes felületet csinálhatsz hozzá, amit nem szégyellsz, gombok és kijelző helyett.
Ráadásul ha ügyes vagy, még riasztást is tudnál vele küldeni (emailben vagy mondjuk telegram-on) az akkumulátor állapotáról, ha van ilyenre igény. -
válasz
its_grandpa #20473 üzenetére
A táp választást mivel indokolod? Ez egy step-up modul, az esp számára teljesen alkalmatlan, mivel lefelé nem tud konvertálni, csak felfelé.
-
its_grandpa
tag
-
Undoroid
őstag
Nagyon csendben vagytok, kedves szakik! Feldobok egy témát, hátha tudtok segíteni...
Szóval a feladatom az lenne, hogy egy 12V 100Ah savas akku feszültségét szeretném folyamatosan figyelni és a kapott adatokat lementeni addig, amíg be nem telik az átmeneti tároló epromja! Ezután a legrégebbi adatokat felülírná a legfrissebbel! A fesz. értékeket pedig -ha már szó esett róla- egy Nokia LCD-n szeretném megjeleníteni grafikus kijelzéssel és a mérési idő is kellene rá! Mivel sok adat lenne egyszerre a kijelzőn, ezért nyomógombbal léptetni is kellene! Nem kellene precíziós pontosságúnak lennie, pusztán tájékoztató/ellenőrző jellegre kellene! Egy egyszerű, kicsi kapacitású, napelemes szigetüzemű rendszer akkumulátorát szeretném rajta figyelemmel kísérni!
Ti, gyakorlottabb szakik! Milyen elemekből építenétek föl ezt az egészet? Néhány alkatrésszel rendelkezem! Mikrovezérlő (ESP vagy NANO), Nokia kijelző, 8csatornás szintillesztő, óramodul+eprom az adatokhoz, nyomógombok, stb...
Köszönöm az ötleteket!
-
Undoroid
őstag
válasz
Ton-ton #20465 üzenetére
Igen, ezt már ismerem és több darab 4csatornásom van is, de láttam pár helyen kapcsolási rajzokat, ahol a kijelzőt 5V-ról hajtották meg direktben! Nos, pont így nem szeretném kikészíteni az első Nokia-kijelzős projektem! Szerencsére kicsit késtek a megrendelt kijelzők és nem tudtam gyorsan kipróbálni az aktuális projektet, amivel biztosan kikészítettem volna rajz alapján valamit...nem jó így elkezdeni a tanulást...ezért olvasok előbb alkatrész adatlapot!
* * *
Amióta -még az elején- véletlenül kikészítettem az egyetlen UNO-m 6-os kimenetét, azóta sokkal óvatosabb vagyok! Késő volt, fáradt voltam, de a lelkesedés nagy volt...az eredmény várható volt.
-
olli
tag
válasz
vargalex #20469 üzenetére
Kiíratás:
Received packet :1 HELLO 36.50 34.00 38369' with RSSI -99 Status: 1 BOILER
vagyis így már egy csomagból működik a pin 13 vezérlése is.
Korábban rákérdeztem az ESP-NOW vonalra a két esp közötti kommunikáció egyik protokolra. A jelen megoldás és az között stabilitás és kidolgozottság lenne csak a különbség? -
vargalex
félisten
Szia!
Ugyan én nem nagyon szoktam használni a String osztályt, de most az egyszerűség kedvéért (kipróbálni ugyan nem tudtam, de szerintem működnie kell):
#include <SPI.h>
#include <LoRa.h>
unsigned int state;
//LoRa32u4 ports
#define SS 8
#define RST 4
#define DI0 7
#define BAND 433E6
void setup() {
Serial.begin(115200);
pinMode(13, OUTPUT); // fehér led sets the pin as output for relay
digitalWrite(13,HIGH);
//while (!Serial); //if just the the basic function, must connect to a computer
delay(1000);
SPI.begin();
LoRa.setPins(SS,RST,DI0);
Serial.println("LoRa Receiver");
if (!LoRa.begin(433E6)) {
Serial.println("Starting LoRa failed!");
while (1);
}
Serial.println("LoRa Initial OK!");
}
/*----( LOOP: RUNS CONSTANTLY )----*/
void loop() {
digitalWrite(13,LOW); // try to parse packet
int packetSize = LoRa.parsePacket();
String message = ""
if (packetSize) { // received a packet
while (LoRa.available()) {
message += (char)LoRa.read();
}
Serial.print("Received packet :");
Serial.print(message);
// print RSSI of packet
Serial.print("' with RSSI ");
Serial.println(LoRa.packetRssi());
Serial.print("Status: ");
Serial.println(message.charAt(0));
}
}A korrekt megoldás valóban inkább az lenne, hogy saját struktúrát definiálni és annak a címét beállítani a beolvasott tömb címére (persze ekkor fix méretekkel kell dolgozni).
-
válasz
Ton-ton #20465 üzenetére
Ez csak i²c-hez szükséges! A kijelzőnél egyirányú a kommunikáció, a hex buffer pont elég hozzá. Bár árban / méretben nem tudom melyik a praktikusabb, lehet az egyszerű ellenállásos verzió is megteszi, de azt én nem merem ajánlani, mert egy ilyen Nokia kijelzőt már régebben kinyírtam szintillesztő IC nélkül.
-
olli
tag
válasz
vargalex #20460 üzenetére
"Received packet :1 HELLO 36.75 22.50 32342' with RSSI -82"
Jelenleg így íratom ki a csomagot, de csak az első karakterét, a state értékét is külön kellene megkapnom.
Szerinted hogyan nézzen ki a kód?#include <SPI.h>
#include <LoRa.h>
unsigned int state;
//LoRa32u4 ports
#define SS 8
#define RST 4
#define DI0 7
#define BAND 433E6void
setup() { Serial.begin(115200);
pinMode(13, OUTPUT); // fehér led sets the pin as output for relay
digitalWrite(13,HIGH);
//while (!Serial); //if just the the basic function, must connect to a computer
delay(1000);
SPI.begin();
LoRa.setPins(SS,RST,DI0);
Serial.println("LoRa Receiver");
if (!LoRa.begin(433E6)) {
Serial.println("Starting LoRa failed!");
while (1); }
Serial.println("LoRa Initial OK!");}
/*----( LOOP: RUNS CONSTANTLY )----*/
void loop() {
digitalWrite(13,LOW); // try to parse packet
int packetSize = LoRa.parsePacket();
if (packetSize) { // received a packet
Serial.print("Received packet :"); // read packet
while (LoRa.available()) {
Serial.print((char)LoRa.read()); }
// print RSSI of packet
Serial.print("' with RSSI ");
Serial.println(LoRa.packetRssi());}}
-
olli
tag
válasz
Janos250 #20453 üzenetére
// try to parse packet
int packetSizeMax = LoRa.parsePacket();
if (packetSizeMax) {
uint8_t inChar[packetSizeMax] ;
uint8_t i = 0 ;
while (LoRa.available()) {
inChar[i] = ((char)LoRa.read());
Serial.print((char)inChar[i]);
i++ ;
Serial.print((char)LoRa.read());
}
}
Így megfelel?
-
Jadenn
csendes tag
válasz
Undoroid #20454 üzenetére
Igen, nekem az STM32 3,3V-os de tudod használni a nokiát uno vagy nanoval is. Én is azzal kezdtem. Csak annyit kell tenni, hogy megkeresed az uno/nano GND és +3,3V lábát ez lesz a nokia tápja, és néhány 10KΩ-os ellenállásra, egy 1KΩ-os ellenállásra és egy 220Ω-os ellenállásra lesz szükséged (háttérvilágításhoz).
Először is, a 10KΩ-os ellenállásokat sorba kell kötni az RST, DC, DIN és CLK érintkezőkkel, míg az 1KΩ-os ellenállást a CE érintkezővel. -
Undoroid
őstag
válasz
Jadenn #20451 üzenetére
Szia!
Köszönöm a gyors válaszod!
Azért kérdeztem rá, mert már régebben össze akartam rakni a Nokia kijelző segítségével és egy UNO-val (vagy Nano-val) egy több sávos rádióvevőt, de átnézve az összetevők adatlapjait, apróbb hibát találtam a működtető feszültségeknél! Az UNO vagy a Nano 5V-os szintekkel dolgozik, míg a Nokia kijelző 3.3V-al. Kulcsszó: szintillesztés Most csak nézelődök, kíváncsiskodok itt a vezérlők között.
A 16x2-es kijelzőket 'ismerem' de a Nokia-lcd-k mások. Most azok használatát keresem...Nagyon kezdő vagyok még ebben a témában és nem úgy szeretnék tanulni, hogy közben túlfeszültséggel kivégzem a drága alkatrészeimet!
-
Janos250
őstag
Pl. így hirtelenjében valami hasonló. Lehet persze, szebben is, de maradjunk az eredeti átírásánál.
uint8_t inChar[packetSizeMax] ;
uint8_t i = 0 ;
while (LoRa.available()) {
inChar[i] = (char)LoRa.read());
Serial.print((char)inChar[i]));
i++ ;
// Serial.print((char)LoRa.read());
}
Aztán, amikor már tudod, hogy hol kezdődik, akkor vagy substringgel kiszeded, vagy rádefiniálsz egy másik tömböt arra a területre, ahol van (erre már írtam példát korábban). Én az utóbbit szeretem, de tökmindegy. -
olli
tag
loRa sender codban:
sensors.requestTemperatures();
float T1 = sensors.getTempC(D0);
float T2 = sensors.getTempC(D1);
Serial.print("Sending packet: ");
Serial.println(counter);
// send packet
LoRa.beginPacket();
LoRa.print(state);
LoRa.print(" ");
LoRa.print("HELLO");
LoRa.print(T1 );
LoRa.print(" " );
LoRa.print(T2 );
LoRa.print(" ");
LoRa.print(counter);
LoRa.endPacket();
counter++;
ESP32u4 receiver codban:
// try to parse packet
int packetSize = LoRa.parsePacket();
if (packetSize) {
// received a packet
Serial.print("Received packet :");
// read packet
while (LoRa.available()) {
Serial.print((char)LoRa.read());
}
// print RSSI of packet
Serial.print("' with RSSI ");
Serial.println(LoRa.packetRssi());
A packetből hogyan lehet a state értékét kinyerni?
-
Janos46
tag
Sziasztok.
Jó régen foglalkoztam a témával. Ismét szeretnék egy ESP8266/DHT11-et működésre bírni. Még megvannak a megfelelő könyvtárak, da ha elidítom, akkor már az ellenőrzésnél a következő üzenetet kapom:
In file included from C:\Users\Jano\Documents\Arduino\libraries\ESP8266WiFi\src/ESP8266WiFi.h:33:0,
from C:\Users\Jano\Documents\Arduino\ESP8266_DHT11_WiFi_1\ESP8266_DHT11_WiFi_1.ino:4:
C:\Users\Jano\Documents\Arduino\libraries\ESP8266WiFi\src/ESP8266WiFiType.h:26:10: fatal error: queue.h: No such file or directory
#include <queue.h>
^~~~~~~~~
compilation terminated.
exit status 1
Hiba a(z) Arduino Uno alaplapra fordításra.
==========
Tudnátok segíteni hogy mi a gond? Előre is köszönettel: János -
válasz
vargalex #20445 üzenetére
Hát akkor próbáld ki telefonon.
Főleg amikor utólag szeretnél javítani/módosítani valami formázást/linket stb.
De a legrosszabb valóban a kód formázás, mert nem képes egyben formázni, szétszedi sorokra a kódot.Ezt a szerkesztős dolgot be lehetne tenni az összefoglalóba, mostanában annyian kérdezték már.
-
-
Jadenn
csendes tag
válasz
bagarol #20434 üzenetére
Így most jó
[CODE]
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Adafruit_PCD8544.h> // adafruit PCD8544 (Nokia 5110)könyvtár
Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3);// Nokia LCD bekötés (CLK, DIN, D/C, CS, RST)
LiquidCrystal_I2C lcd(0x27, 16, 2); // címzés
int LDR = A2;
int sunValue;
void setup() {
lcd.init();
lcd.backlight();
display.begin(); // kijelzés kezdödik
display.setContrast(62); // kontraszt 60 alatt nem elég erős
display.clearDisplay(); // törli a képernyőt
display.setTextSize(1); // betüméret
display.setTextColor(BLACK, WHITE); // az 1. a betüszin, a 2. a háttere
pinMode(LDR, INPUT); // ldr bemenetnek beállitva
lcd.print("hello, world!");
delay(1000);
}
void loop() {
for (int positionCounter = 0; positionCounter < 13; positionCounter++) {
lcd.scrollDisplayLeft();
measurement();
delay(250);
}
for (int positionCounter = 0; positionCounter < 29; positionCounter++) {
lcd.scrollDisplayRight();
measurement();
delay(250);
}
for (int positionCounter = 0; positionCounter < 16; positionCounter++) {
lcd.scrollDisplayLeft();
measurement();
delay(250);
}
}
void measurement() {
display.display();
sunValue = analogRead(LDR); // analogérték beolvasása
display.setCursor(0, 17); // 1. oszlop 2. sor
display.printf("Feny %3d", sunValue);
}
[/CODE] -
Jadenn
csendes tag
válasz
bagarol #20431 üzenetére
Átalakitottam ilyenre, de igy is ugyanolyan ....
(hogy lehet rendesen berakni a kódot?)
mint ahogy lanszelot tette a 20424 hsz-ba#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Adafruit_PCD8544.h> // adafruit PCD8544 (Nokia 5110)könyvtár
Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3);// Nokia LCD bekötés (CLK, DIN, D/C, CS, RST)
LiquidCrystal_I2C lcd(0x27, 16, 2); // címzés
int LDR = A2;
int sunValue;void setup() {
lcd.init();
lcd.backlight();
display.begin(); // kijelzés kezdödik
display.setContrast(62); // kontraszt 60 alatt nem elég erős
display.clearDisplay(); // törli a képernyőt
display.setTextSize(1); // betüméret
display.setTextColor(BLACK, WHITE); // az 1. a betüszin, a 2. a háttere
pinMode(LDR, INPUT); // ldr bemenetnek beállitva
lcd.print("hello, world!");
delay(1000);
}
void measurement() {
sunValue = analogRead(LDR); // analogérték beolvasása
display.setCursor(0, 17); // 1. oszlop 2. sor
display.printf("Feny %3d", sunValue);
}void loop() {
display.display();
for (int positionCounter = 0; positionCounter < 13; positionCounter++) {
lcd.scrollDisplayLeft();
measurement();
delay(250);
}
for (int positionCounter = 0; positionCounter < 29; positionCounter++) {
lcd.scrollDisplayRight();
measurement();
delay(250);
}
for (int positionCounter = 0; positionCounter < 16; positionCounter++) {
lcd.scrollDisplayLeft();
measurement();
delay(250);
}
} -
bagarol
tag
válasz
Jadenn #20430 üzenetére
Szia!
A scrollozással elmegy 14 mp és csak utána frissül.
De hogy egy megoldást is mondjak:void light() {
sunValue = analogRead(LDR); // analogérték beolvasása
display.setCursor(0, 17); // 1. oszlop 2. sor
display.printf("Feny %3d", sunValue);
display.display();
}Beírod minden delay(); elé v. mögé light(); és ~ negyed mp-enként frissül.
-
Jadenn
csendes tag
Sziasztok!
A napokban "játszottam" Nokia 5110 SPI, 16x2 I2C lcd-kkel. Összeraktam egy kódot, amivel ki kéne irjon mindkét kijelzőre de a nokia csak olyan 10-15mp es frissitésekkel irja ki a változó értékét, az I2C jónak tünik. Nem vagyok profi a témába ezért kérdezem miért nem "gyors" a nokia lcd? Mit csináltam rosszul?
[code]
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Adafruit_PCD8544.h> // adafruit PCD8544 (Nokia 5110)könyvtár
Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3);// Nokia LCD bekötés (CLK, DIN, D/C, CS, RST)
LiquidCrystal_I2C lcd(0x27, 16, 2); // címzés
int LDR = A2;
int sunValue;
void setup() {
lcd.init();
lcd.backlight();
display.begin(); // kijelzés kezdödik
display.setContrast(62); // kontraszt 60 alatt nem elég erős
display.clearDisplay(); // törli a képernyőt
display.setTextSize(1); // betüméret
display.setTextColor(BLACK, WHITE); // az 1. a betüszin, a 2. a háttere
pinMode(LDR, INPUT); // ldr bemenetnek beállitva
lcd.print("hello, world!");
delay(1000);
}
void loop() {
display.display();
for (int positionCounter = 0; positionCounter < 13; positionCounter++) {
lcd.scrollDisplayLeft();
delay(250);
}
for (int positionCounter = 0; positionCounter < 29; positionCounter++) {
lcd.scrollDisplayRight();
delay(250);
}
for (int positionCounter = 0; positionCounter < 16; positionCounter++) {
lcd.scrollDisplayLeft();
delay(250);
}
sunValue = analogRead(LDR); // analogérték beolvasása
display.setCursor(0, 17); // 1. oszlop 2. sor
display.printf("Feny %3d", sunValue);
}
[/code] -
Janos250
őstag
válasz
lanszelot #20426 üzenetére
Az ilyen multishieldek alapvetően jók, sok minden van rajtuk. Ha nem a gyári programját használod, akkor valóban jó lesz sok mindenre.
Viszont idővel majd bizonyára átállsz az UNO-nál korszerűbb lapra, és akkor látod majd, mennyivel egyszerűbb lesz az életed, nagyjából ugyanannyi pénzből.
Breadboard:
Én ezért csináltattam az ESP32-mhöz panelt, amin sok minden rajtavan, és ha lehet, azt használom. Terveztem már a neten fennlévő, egészen jónak tűnő panelt is csináltatni, de egyelőre az még elmaradt. A 10 db. panel volt 5 $ (0.5 $ /db. , ha 10-et csináltattam.) igaz, hogy 3-4-nél többet nem használok, a többi megy a szemetesbe, de így is sokat segít. Bár a szállítás sajnos elég drága. -
vargalex
félisten
válasz
Janos250 #20425 üzenetére
A kolléga által írt "sufni tuning" megoldás után én is éppen azt kerestem a lib-ben, hogy csak megcsinálták, hogy lekérdezhető legyen a beep parancs futásának állapota. Erre nem... Ezért nem is írtam másik megoldási javaslatot.
Persze lehetne azt, hogy kiszámoljuk, hogy az adott paraméterezéssel meddig tart a csipogás és az if-ben vizsgáljuk, hogy az eltelt-e már (ekkor nyilván érdemes a 3 ág indulási idejét 3 különböző változóban tárolni, mert nyiván egyik állapotról a másikra akár azonnal át akarhatunk váltani). Persze, ez csak hozzávetőleges idő lesz. -
lanszelot
addikt
válasz
Janos250 #20425 üzenetére
Azért vettem ezt a MuktiShield-et mert mindig áll 3-4 project-em arra várva hátha sikerül befejezni.
Most is ott vár a polcon 4 project - MultiShield nincs benne.
Mivel azokkal nem tudok hetek óta haladni, ilyenkor bele kezdek valami másba.
No, de nincs vezetékem a breadboard -hoz, mert mind ott van a többiben. Az a pár szál vezeték arany áron van.
40 darab 10cm vezeték áráért vettem ezt a shield-et.
Ezen meg van minden lim-lom.
Ez volt az első project -em vele.
Megtanultam, hogy a "*.h" -ját nem fogom használni.
Ott van benne melyik ingyom-bingyom melyik pin-re van csatlakoztatva, és azt fogom használni.
Senkit sem ismerek aki egy izzó cserénél többet tudna.
Így nincs senki akit kérdezhetnék.
Így ha elakadok, akkor el vagyok akadva.
Még nagyon kezdő vagyok, így mindig elakadok
Ezért nagyon szépen köszönöm, hogy segítetek -
Janos250
őstag
válasz
lanszelot #20424 üzenetére
Kíváncsiságból megnéztem ez a MultiFuncShield-et.
Sikerült olyan példát találnod, amire azt írják, hogy ÍGY NE!
Itt is leírták már párszor, hogy az isrCallBack() legyen a legrövidebb. Erre itt egy példa, ami mindent vizsgál, mindent csinál az ISR-ben. Persze, szegény ember vízzel főz, szegény kontrollerhez bonyolult szoftvert írunk, de a mai kontrollereken azért ennél már többet tudnak a hardverek, nem kell így csinálni.
Továbbá, ha már így csinálták meg, illet volna egy olyan függvényt beletenni, ami lekérdezve megmondja, hogy befejeződött-e az előző feladata, azaz jelen esetben beep-je, hiszen ez az ISR rutin a dolog jellegéből adódóan nem reentrant, azaz nem olyan, hogy futás közben egy másik szál megszakítsa, és újra elkezdje végrehajtani, majd miután ő befejezte, visszakerül a vezérlés az eredetire.
Itt persze alapfilozófiák ütköznek: mivel kezdjen a kezdő? Egyszerű, régi kontrollerrel, vagy modernebbel. Persze - némi artistamutatvánnyal - a régin is megcsinálható hasonló dolog, mint a korszerűbbön, de ez holt tudás lesz, mert idővel úgyis korszerűbbre áll át.Gimnázium első osztályában politechnika órán én is készítettem fémfűrésszel, és kézi reszelővel kalapácsot. Akkor ez egy alapnak számított. Ma inkább azt mondanám, hogy szívatás volt. Még kb 20 évvel ezelőtt is hallottam valakitől, hogy volt, ahol még akkor is csináltatták. Meg lehet persze így is csinálni, de CNC géppel könnyebb.
Én annak a híve vagyok, hogy kezdő is a korszerűbb dolgokkal kezdje, hogy ne holt információkat tanuljon meg, mint ez az interrupt kezelés a MultiFuncShield programjában, mert soha nem fogja így csinálni a későbbiekben. Ha csak nem mazochista.
-
lanszelot
addikt
válasz
Tomika86 #20422 üzenetére
Először is köszönöm a segítséget mindenkinek.
Végre megértettem, amit próbáltatok elmagyarázni.
Rosszul értelmeztem amit írtatok.
Azt hittem a loop megvárja a szünetet, mert azt hittem az úgy működik mint a delay.
De nem, az úgy működik mint a beep.A loop végén írtam miert nem jó a hosszabb delay.
Akkor az egész eltorzul.Viszont az elsőbe ami nem jól működik oda beszúrtam egy delay-t.
És így, bár sufni tuning módra, de megoldódottitt a kész kód:
#include <TimerOne.h>
#include <Wire.h>
#include <MultiFuncShield.h>
int trigPin = 40; // Trigger
int echoPin = 41; // Echo
long duration, cm, inches;
void setup() {
//Serial Port begin
Serial.begin (9600);
//Define inputs and outputs
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Timer1.initialize();
MFS.initialize(&Timer1);
}
void loop() {
// The sensor is triggered by a HIGH pulse of 10 or more microseconds.
// Give a short LOW pulse beforehand to ensure a clean HIGH pulse:
digitalWrite(trigPin, LOW);
delayMicroseconds(5);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Read the signal from the sensor: a HIGH pulse whose
// duration is the time (in microseconds) from the sending
// of the ping to the reception of its echo off of an object.
pinMode(echoPin, INPUT);
duration = pulseIn(echoPin, HIGH);
// Convert the time into a distance
cm = (duration/2) / 29.1; // Divide by 29.1 or multiply by 0.0343
inches = (duration/2) / 74; // Divide by 74 or multiply by 0.0135
MFS.write((int)cm);
/*Serial.print(inches);
Serial.print("in, ");
Serial.print(cm);
Serial.print("cm");
Serial.println();*/
if (cm <= 30 && cm > 20) {
MFS.beep(25, // beep for 250 milliseconds
100, // silent for 1000 milliseconds
1, // repeat above cycle 1 times
1, // loop 1 times
1 // wait 10 milliseconds between loop
);
delay(320);
Serial.println("egyes");
}else if (cm <= 20 && cm > 10) {
MFS.beep(25, // beep for 250 milliseconds
10, // silent for 100 milliseconds
1, // repeat above cycle 1 times
1, // loop 1 times
1 // wait 10 milliseconds between loop
);
Serial.println("kettes");
}else if (cm <= 10) {
MFS.beep(55, // beep for 350 milliseconds
1, // silent for 10 milliseconds
1, // repeat above cycle 1 times
1, // loop 1 times
1 // wait 10 milliseconds between loop
);
Serial.println("harmas");
}
delay(320);
} -
-
vargalex
félisten
-
vargalex
félisten
válasz
lanszelot #20418 üzenetére
Csak belenéztem a lib-be, így egyáltalán nem biztos, amit írok. De azt látom, hogy a beep metódus csak belső változókat állít be és az osztály példány majd azzal dolgozik. Ez azt is jelenti, hogy a te kódod azonnal fut tovább (illetve lesz a 250 ms delay) és újra elkezdődik a loop, megint bemegy az if-be és újra inicializálja a beep-el a csipogást. Ezért hallod folyamatosan ugyan azt (szerintem).
-
lanszelot
addikt
válasz
vargalex #20417 üzenetére
Rosszul emlékeztem.
De 200 is kevesebb mint 250 így lesz benne szünet.
És van is.De még mindig nem a 2ik és 3ik ággal van gond.
Hanem az elsővel.
Csak az első ág nem működik jól.
A többi jó.
Az első ágban nem fut le a szünet. Állíthatom bármekkorára.
Vagy nem jut el oda a futtatás, vagy felül írja valami.
Felül írja, én arra szavazok. Mert a "nem fut le" annak semmi értelme, ha a másikban gond nélkül lefut.
Tehát mi írja felül az if első ágában az 1500ms szünetet, vagy akár az egész ágat.
Az az ág fut le, az biztos. Másik ág nem fut le egyidőben.
A kiiratás teszt megmutatta.
De mégis felül írja vmi. De mi? -
lanszelot
addikt
válasz
vargalex #20415 üzenetére
Az első ággal van gond.
Amúgy nem annyiban különbözik
Default: 25, 25, 1, 1, 1
Ez ugye a 2ik ág
A 3ik ág: 35,1,1,1,1.
Mivel a silent 1, azaz nincs, így folyamatos beeeeeep -et kapok, hiába van ott a 250 -es delay, mert 350 be bele megy a 250 és nem lesz delay.Míg 150+250+250 ezért lesz a 2ik ágban szünet.
Aza beep, szünet, beep, szünet....stbAz első ág az:
150+1500, mivel ott van repeat, de nincs 1500,
150+250 van, repeat sincs.
Pedig ott van
Az első kódsor ugyanaz, és jól működik. Míg a másodikban varázslatos módon ugyanaz a kód nem működik.
Állíthatom a silent-et 4millióra is nem lesz silent.
De miért nincs silent? Mi írja felül 1-re?
/Ha nulla az érték az végtelent jelent, kipróbáltam. 1 jelenti a nincs-et/ -
-
lanszelot
addikt
válasz
Tomika86 #20413 üzenetére
A mellette lévő kommentet értékeket nem írkáltam át, mert minek.
A lényege hogy melyik mit csinál . Nem a kommenthez kell igazítani a programot. A kommentet kell a programhoz.
Az értékek úgy jók ahogy beírtam.
"If" - rovid beep, hosszú szünet
"else if" - rövid beep, rövid szünet
"else if" - hosszú beep , nincs szünet.Mit értesz az alatt hogy a másodiknál folyamatosan ismétlődik?
Az első " else if" - re gondolsz?
Az érték nélküli az egy rövid beep . Nincs ismétlés.
Annál a delay adja a szünetet, épp azért nem változtatható.
Mert akkor mind a két "else if" rossz lesz a delay miatt.
Delay növelés nem jó megoldás.Valamiért az "if" -et felül írja valami. De nem tudom mi.
A benne lévő rész jól fut külön, tehát nincs elírva.
Nincs más az "if" -en belül, tehát csak az marad, hogy valami felül írja.
Lehet, hogy valamelyik "*.h" ban van bug és belefutottam. -
Tomika86
senior tag
válasz
lanszelot #20412 üzenetére
De nem jól van paraméterezve a beep függvény. A mellette levő komment se jó.
Ahol a setup blokkban van ott csak egyszer fut le.
A másodiknál a loopban folyamatosan ismétlődik, 250ms delay van a végén csak. Tegyél nagyobb delayt a próba kedvéért, delay(10000)MFS.beep(5, // beep for 50 milliseconds
5, // silent for 50 milliseconds
4, // repeat above cycle 4 times
3, // loop 3 times
50 // wait 500 milliseconds between loop
); -
lanszelot
addikt
válasz
Tomika86 #20410 üzenetére
A középsőt nem kell paraméterezni.
Az alap beállításokkal fut: a felsőben feliratozva is van 200 ms beep.
Ha haza érek akkor feliratozom és megnézem.De ha jó ág is fut le akkor se jól csipog.
150-es szünet nincs sehol.
Nem találom mi írja felül.Elsőben jó: 15-ös beep, 150-es szünet, 15-ös beep, 150 szubet, 15 beep, 150 szünet. Vége
Így is kellene.Masodikban nincs 150-es szünet.
Kíváncsi vagyok mit fog mutatni a feliratkozás, melyik fut le.
-
lanszelot
addikt
Hello,
Itt tökéletesen működik a buzzer, rövid csip, hosszú szünet, 3szor
#include <TimerOne.h>
#include <Wire.h>
#include <MultiFuncShield.h>
void setup() {
// put your setup code here, to run once:
Timer1.initialize();
MFS.initialize(&Timer1); // initialize multi-function shield library
// NOTE beep control is performed in the background, i.e. beep() is non blocking.
// short beep for 200 milliseconds
MFS.beep();
delay(1000);
// 4 short beeps, repeated 3 times.
MFS.beep(15, // beep for 50 milliseconds
150, // silent for 50 milliseconds
3, // repeat above cycle 4 times
1, // loop 3 times
50 // wait 500 milliseconds between loop
);
}
void loop() {
// put your main code here, to run repeatedly:
}itt viszont rosszul működik, rövid csip, rövid szünet, 1szer
#include <TimerOne.h>
#include <Wire.h>
#include <MultiFuncShield.h>
int trigPin = 40; // Trigger
int echoPin = 41; // Echo
long duration, cm, inches;
void setup() {
//Serial Port begin
Serial.begin (9600);
//Define inputs and outputs
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Timer1.initialize();
MFS.initialize(&Timer1);
}
void loop() {
// The sensor is triggered by a HIGH pulse of 10 or more microseconds.
// Give a short LOW pulse beforehand to ensure a clean HIGH pulse:
digitalWrite(trigPin, LOW);
delayMicroseconds(5);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Read the signal from the sensor: a HIGH pulse whose
// duration is the time (in microseconds) from the sending
// of the ping to the reception of its echo off of an object.
pinMode(echoPin, INPUT);
duration = pulseIn(echoPin, HIGH);
// Convert the time into a distance
cm = (duration/2) / 29.1; // Divide by 29.1 or multiply by 0.0343
inches = (duration/2) / 74; // Divide by 74 or multiply by 0.0135
MFS.write((int)cm);
Serial.print(inches);
Serial.print("in, ");
Serial.print(cm);
Serial.print("cm");
Serial.println();
if (cm <= 30 && cm > 20) {
MFS.beep(15, // beep for 50 milliseconds
150, // silent for 50 milliseconds
3, // repeat above cycle 4 times
1, // loop 3 times
50 // wait 500 milliseconds between loop
);
}else if (cm <= 20 && cm > 10) {
MFS.beep();
}else if (cm <= 10) {
MFS.beep(35, // beep for 50 milliseconds
1, // silent for 50 milliseconds
1, // repeat above cycle 4 times
1, // loop 3 times
1 // wait 500 milliseconds between loop
);
}
delay(250);
}Miért rossz a másodikban?
olyan mintha az első "else if" futna le 30-20 között is, nem pedig az "if"
de nem értem miért -
Janos250
őstag
Köszi, azt hiszem, valami ilyesmi lesz. Ilyen DC/DC-m van pár, de nem is kell a 3 potis, elég az 1 potis is, mert pl. áramkorlát nem kell.
Vagy tényleg 3 potis, és akkor az "indokolatnul nagy kondi", egy Li akku lesz, ami állandóan rajta lesz a töltőn, és az áram lekapcsolásakor is működik egy darabig.
Egyébként egy riasztó része lesz.
A mai "olcsó" kínai kamerák zöme is tudja az emberi alak felismerést, valamint nem csak mailre, hanem riasztó szerverre is tud küldeni egy karaktersorozatot TCP-n.
Ez a szerver egy ESP32 + SIM800 lesz, ami megcsörgeti a zsebemben lévő (buta) telefont, amivel telefonálni szoktam. Nem veszem fel, mert akkor ingyenes.Erre előveszem a táskából az okostelefont, bekapcsolom, és megnézem neten a kamerát, hogy a sok gyerek közül melyik az, amelyik megint le akarja verni kalapáccsal a vasszekrényről a lakatot.
-
tibi-d
tag
Próbált-e már valaki TFT LCD Mega Shield v2.2-t arduino UNO-val használni? Milyen átalakítást kéne végezni, hogy a kijelző és az érintőfelület is működjön? Vagy ez halott ötlet?
-
Új hozzászólás Aktív témák
Hirdetés
- AMD Navi Radeon™ RX 9xxx sorozat
- A Fehér Házban marad a Starlink Trump és Musk rossz kapcsolata ellenére
- Milyen légkondit a lakásba?
- AMD vs. INTEL vs. NVIDIA
- gban: Ingyen kellene, de tegnapra
- Honor Magic V2 - origami
- Sorozatok
- HiFi műszaki szemmel - sztereó hangrendszerek
- Kerékpárosok, bringások ide!
- Milyen belső merevlemezt vegyek?
- További aktív témák...
- 15,6" Dell Latitude laptopok: E6540, E5550, E5570, 5580, 5590, 5500, 5501, 5510/ SZÁMLA + GARANCIA
- BESZÁMÍTÁS! ASUS TUF Z390-PLUS GAMING alaplap garanciával hibátlan működéssel
- BESZÁMÍTÁS! AOC 24P1 24 FHD 60Hz 5ms monitor garanciával hibátlan működéssel
- ÁRGARANCIA!Épített KomPhone Ryzen 7 7800X3D 32/64GB RAM RX 9070 XT GAMER PC termékbeszámítással
- BESZÁMÍTÁS! ASUS A520M R5 5600X 16GB DDR4 512GB SSD RTX 3060Ti 8GB Rampage SHIVA Enermax 650W
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest