-
IT café
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
-
weiss
addikt
Sziasztok, volt már dolga valakinek ilyennel?
I did nothing, the pavement was his enemy!
-
weiss
addikt
Van egy ilyen boardom:
Istennek nem tudom rávenni, hogy kommunikáljon az Arduinoval. SIM kártyával fel tudom hívni, szóval nem döglött, csak mintha nem működnének a soros portjai. Van valakinek valami tippje?
I did nothing, the pavement was his enemy!
-
weiss
addikt
Így hirtelen, próba, cseresznye:
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 7 // Hőmérő a pin7-en
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
int led1 = 6;
int ledState = LOW; // kimeneti pin aktuális állapota
int ledBLINK = 8;
char engedely = HIGH;
unsigned long lastTemp;
float temperature;
int was_low = 1;
int was_high = 1;
void setup()
{
pinMode(led1, OUTPUT);
digitalWrite(led1, ledState);
pinMode(ledBLINK, OUTPUT);
Serial.begin(9600);
sensors.begin();
sensors.setResolution(11);
}
void loop()
{
if (millis() > lastTemp + 1000 ){
sensors.requestTemperatures();
temperature = sensors.getTempCByIndex(0);
Serial.println(temperature);
if (temperature < (24-0.5 )) {
ledState = HIGH;
was_low = 1;
if(was_high){
was_high = 0;
blink5();
}
}
else if (temperature > (24+0.5 )) {
ledState = LOW;
was_high = 1;
if(was_low){
was_low = 0;
blink5();
}
}
lastTemp = millis();
}
digitalWrite(led1, ledState);
}
void blink5(){
for(int i=0;i<5;i++){
digitalWrite(ledBLINK,HIGH);
delay(500);
digitalWrite(ledBLINK,LOW);
delay(500);
}
}[ Szerkesztve ]
I did nothing, the pavement was his enemy!
-
weiss
addikt
Aki használ BME280-at, az normális, hogy az értékek zajosak? Szobában nyugalomban van a szenzor, és a tizedes érték ugrál. Próbáltam adafruitos és sparkfunos libbel is, oversample/filter a maximumon van, bár mikor ezeket állítgattam, akkor sem láttam érdemi változást.
I did nothing, the pavement was his enemy!
-
weiss
addikt
válasz Honkydoo #5987 üzenetére
Teljesen mindegy mennyire gyors, nem csúsznak egymásra, mert először feltöltöd a tömböt, aztán ha tele van, kilövöd a megszakítást, és utána szöszöl az FFT-vel, és elölről. Szerintem ez így teljesen jó. Miért nem próbálod ki egyébként?
I did nothing, the pavement was his enemy!
-
weiss
addikt
válasz BTminishop #6496 üzenetére
Ráállítasz egy megszakítást a pinre, és a megszakító rutinban kapcsolgatsz egy változót. A loopban meg változó függvényében kapcsolgatod a ledet.
I did nothing, the pavement was his enemy!
-
weiss
addikt
Most mobilról vagyok, szóval nem, de ha nagyon kell, valamit előkeresek holnap. A koncepció az, hogy beállítasz egy timert a megszakításkezelő függvényben, és amíg nem jár le, addig nem veszed figyelembe a megszakítást. Ez gyakorlatilag 0 késleltetés.
I did nothing, the pavement was his enemy!
-
weiss
addikt
válasz vargalex #7403 üzenetére
Ha jól látom az a töltő tud belső ellenállást is mérni, nem emlékszel mennyi volt? Én is ilyen bontott cellákat használok zseblámpákban, de arra gyanakszom, hogy túl nagy. Mármint tudom, hogy nem minden aksi más, csak kíváncsi vagyok, hogy egy nem éppen megkímélt noticella mennyire használódik el.
I did nothing, the pavement was his enemy!
-
weiss
addikt
Találkoztatok olyan ESP32 boarddal, amelyiken van USB /a könnyebb programozhatóság végett/, de le is lehet kapcsolni mindent az SoC-n kívül, ha valami low power cuccok akarok csinálni?
I did nothing, the pavement was his enemy!
-
weiss
addikt
Az ESP32-nek nem kellene mindig ugyanannyi idő alatt végrehajtani ugyanazt a kódot, ha nincs megszakítás?
I did nothing, the pavement was his enemy!
-
weiss
addikt
válasz Tankblock #9190 üzenetére
#include "xtensa/core-macros.h"
#include "sound.h"
#define DAC_PIN 25
void setup()
{
Serial.begin(115200);
pinMode(DAC_PIN, OUTPUT);
}
void loop()
{
int start = micros();
play_music();
int stop = micros();
Serial.println(stop - start);
delay(1000);
Serial.println(".");
}
void play_music()
{
uint32_t wait_start = 0;
uint32_t num_tick_to_wait = F_CPU / SAMPLE_RATE;
for(int i = 0; i < NUM_SOUND_SAMPLES; i++)
{
wait_start = xthal_get_ccount();
dacWrite(DAC_PIN, sound_samples[i] + 128);
while((xthal_get_ccount() - wait_start) < (num_tick_to_wait - 86))
{
NOP();
}
}
}A
micros()
helyett próbáltamxthal_get_ccount()
-ot használni, de az sem volt konstans. Próbáltam kikommentelni adacWrite
-ot is, de az sem segített. Már csak arra tudok gondolni, hogy az Arduino fordít valami dinamikus cuccot oda.I did nothing, the pavement was his enemy!
-
-
weiss
addikt
Ha jól értem, a mikrovezérlőről szeretnél meghajtani egy klasszikus relét? Ez nem jó ötlet, mert a lap nem tud annyi áramot adni, hogy meghajtsa a relét. Egy solid state relét lehetne esetleg használni. Tápnak pedig én egy kapacitív előtétet használnék, de azt pontosan kell méretezni.
I did nothing, the pavement was his enemy!
Új hozzászólás Aktív témák
- Poco X6 Pro - ötös alá
- Kerékpárosok, bringások ide!
- Szevam: Érzelmi magabiztosság/biztonság - miért megyünk sokan külföldre valójában?
- Alkalmazásbemutató: Keep
- Gaming notebook topik
- Súlyos adatvédelmi botrányba kerülhet a ChatGPT az EU-ban
- Debrecen és környéke adok-veszek-beszélgetek
- Futott egy Geekbench kört egy új HTC készülék
- Apple notebookok
- Anime filmek és sorozatok
- További aktív témák...