- Mobil flották
- Fotók, videók mobillal
- Redmi Watch 5 - formás, de egyszerű
- CMF Phone 2 Pro - a százezer forintos kérdés
- Hónap végén érkezik a Xiaomi Band 10, ára is van
- Samsung Galaxy Watch (Tizen és Wear OS) ingyenes számlapok, kupon kódok
- Yettel topik
- Samsung Galaxy S22 Ultra - na, kinél van toll?
- Magisk
- Egy szenzor, két zoomkamera: újraírta a Huawei a mobilfotózás történetét
-
Mobilarena
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
-
LógaGéza
veterán
Szeretném ezt összerakni, és azon gondolkodok, hogy hogyan lehetne minél olcsóbban megoldani. Úgy értelmezem aREST libraryt használ a kommunikációhoz.
Ahogy nézem a Wifi Shieldek nem olcsó mulatságok, kivéve ez a ESP8266, csak nem tudom abból melyik lenne a jó és mi kell, hogy tudjam csatlakoztatni.
Viszont beleolvasva az aREST headerbe ez támogat serial portos kommunikációt is - viszont akkor felmerül a kérdés, hogy mivel az Android appba IP címet és portot kell megadni, akkor hogy lövöm be soros kommunikációra (gondolom leginkább sehogy sem megoldható, mert akkor a telóra kéne kapcsolnom, és azon kiadni a parancsokat).Szóval mi lenne a legköltséghatékonyabb megoldás? Boardot is vennem kell hozzá (3 napot bírt az első Nanom
).
-
junhum
tag
Sziasztok!
Volna egy olyan problémám, hogy ez a kód:
#include <OneWire.h>
#include <SPI.h>
#include <Ethernet.h>
// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {0xAD, 0xBD, 0xCD, 0xED, 0xFD, 0x0D};
IPAddress ip(192, 168, 0, 100);
// ThingSpeak Settings
char thingSpeakAddress[] = "api.thingspeak.com";
String writeAPIKey = "xxxxxxxxxxxxxxxxxxx";
const int updateThingSpeakInterval = 16 * 1000; // Time interval in milliseconds to update ThingSpeak (number of seconds * 1000 = interval)
// Variable Setup
long lastConnectionTime = 0;
boolean lastConnected = false;
int failedCounter = 0;
// Initialize Arduino Ethernet Client
EthernetClient client;
// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);
OneWire ds(10); // on pin 10 (a 4.7K resistor is necessary)
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
// wait for serial port to connect. Needed for Leonardo only
// Start Ethernet on Arduino
startEthernet();
}
// start the Ethernet connection and the server:
Ethernet.begin(mac, ip);
server.begin();
Serial.print("server is at ");
Serial.println(Ethernet.localIP());
}
void loop() {
byte i;
byte present = 0;
byte type_s;
byte data[12];
byte addr[8];
float celsius, fahrenheit, celsiuss;
if ( !ds.search(addr)) {
Serial.println("No more addresses.");
Serial.println();
ds.reset_search();
delay(850);
return;
}
if (OneWire::crc8(addr, 7) != addr[7]) {
Serial.println("CRC is not valid!");
return;
}
Serial.println();
ds.reset();
ds.select(addr);
ds.write(0x44); // start conversion, use ds.write(0x44,1) with parasite power on at the end
delay(1000); // maybe 750ms is enough, maybe not
// we might do a ds.depower() here, but the reset will take care of it.
present = ds.reset();
ds.select(addr);
ds.write(0xBE); // Read Scratchpad
Serial.print(" Data = ");
Serial.print(present, HEX);
Serial.print(" ");
for ( i = 0; i < 9; i++) { // we need 9 bytes
data[i] = ds.read();
Serial.print(data[i], HEX);
Serial.print(" ");
}
Serial.print(" CRC=");
Serial.print(OneWire::crc8(data, 8), HEX);
Serial.println();
// Convert the data to actual temperature
// because the result is a 16 bit signed integer, it should
// be stored to an "int16_t" type, which is always 16 bits
// even when compiled on a 32 bit processor.
int16_t raw = (data[1] << 8) | data[0];
if (type_s) {
raw = raw << 3; // 9 bit resolution default
if (data[7] == 0x10) {
// "count remain" gives full 12 bit resolution
raw = (raw & 0xFFF0) + 12 - data[6];
}
} else {
byte cfg = (data[4] & 0x60);
// at lower res, the low bits are undefined, so let's zero them
if (cfg == 0x00) raw = raw & ~7; // 9 bit resolution, 93.75 ms
else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms
else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms
//// default is 12 bit resolution, 750 ms conversion time
}
celsius = (float)raw / 16.0;
fahrenheit = celsius * 1.8 + 32.0;
Serial.print(" Temperature = ");
Serial.print(celsius);
Serial.print(" Celsius, ");
Serial.print(fahrenheit);
Serial.println(" Fahrenheit");
celsiuss = round(celsius);
String analogValue0 = String(celsiuss, DEC);
Serial.println(celsius);
// Print Update Response to Serial Monitor
if (client.available())
{
char c = client.read();
Serial.print(c);
}
// Disconnect from ThingSpeak
if (!client.connected() && lastConnected)
{
Serial.println("...disconnected");
Serial.println();
client.stop();
}
// Update ThingSpeak
// if(!client.connected() && (millis() - lastConnectionTime > updateThingSpeakInterval))
// {
updateThingSpeak("field1="+analogValue0);
// }
// Check if Arduino Ethernet needs to be restarted
if (failedCounter > 3 ) {startEthernet();}
lastConnected = client.connected();
}
void updateThingSpeak(String tsData)
{
if (client.connect(thingSpeakAddress, 80))
{
//String tsData;
client.print("POST /update HTTP/1.1\n");
client.print("Host: api.thingspeak.com\n");
client.print("Connection: close\n");
client.print("X-THINGSPEAKAPIKEY: "+writeAPIKey+"\n");
client.print("Content-Type: application/x-www-form-urlencoded\n");
client.print("Content-Length: ");
client.print(tsData.length());
client.print("\n\n");
client.print(tsData);
lastConnectionTime = millis();
if (client.connected())
{
Serial.println("Connecting to ThingSpeak...");
Serial.println();
failedCounter = 0;
}
else
{
failedCounter++;
Serial.println("Connection to ThingSpeak failed ("+String(failedCounter, DEC)+")");
Serial.println();
}
}
else
{
failedCounter++;
Serial.println("Connection to ThingSpeak Failed ("+String(failedCounter, DEC)+")");
Serial.println();
lastConnectionTime = millis();
}
}
void startEthernet()
{
client.stop();
Serial.println("Connecting Arduino to network...");
Serial.println();
delay(1000);
// Connect to network amd obtain an IP address using DHCP
if (Ethernet.begin(mac) == 0)
{
Serial.println("DHCP Failed, reset Arduino to try again");
Serial.println();
}
else
{
Serial.println("Arduino connected to network using DHCP");
Serial.println();
}
delay(1000);
}
No more adresses dob serialon és nem is megy tovább a program, legalábbis Thingspeaken nem látnám hogy akarmi menne (api kód kitöltve), ha csak egy sima példa programot futtatok akkor ott küld adatot.
Ha csak onewire példát futtatok akkor működik.
Egybe a kettőt nem tudom.
Uno van w5100 shielddelszerk.:
A shieldet elég egyébként csak spi-n összekötni? pl ha nanoval akarom majd összehozni? -
tvamos
nagyúr
válasz
gyapo11 #2195 üzenetére
Van egy Teensy 3-0-am, (Freescale ARM Cortex M valami van rajta,) de valahogy nem olyan zokkenomentes vele az elet, mint az Uno-val. (Software kompatibilitasi problemak...) En inkabb hasznalok STM32 discovery-t, (Ezen meg ST ARM Cortex van, M0-as, M3-as, meg M4-es is van, es hasznalni is merem,) mint a Teensy-t.
Nem attol felek. hogy nem lesz MCU, hanem attol, hogy az Atmel tolja bele a zsetont az Arduino projektbe, mas nem biztos, hogy aldoz ra ennyit... a masik dolog, amitol felek, hogy a kinaiak veszik meg. Nem szeretem a filozofiajukat.
(#2196) Pulsar válasza tvamos (#2194) üzenetére
Ahogy latom, az egesz ceget "bekapja" valaki, nem csak a panelt... -
-
tvamos
nagyúr
Vajon mi lesz az Arduinoval, ha valaki megeszi az Atmelt?
Ezt vettem legutób: [link]
-
Gergosz2
veterán
válasz
powerwade #2190 üzenetére
Hát akkor DIP-es 328-at vegyél. Ezek olyan 2$/db áon szoktak menni,ha már ötösével rendeli az ember. Vagy másik megoldás lehet, ha egy Arduino Nano-t veszel. Ugyanúgy tudod próbapanelbe dugdosni, még olcsóbb is egy kicsit, és más alkatrész sem kell hozzá.
(#2191) tvamos
+1. Ha muszáj csak akkor használok DIP-et. -
Gergosz2
veterán
válasz
Pubszon #2182 üzenetére
semmi értelme, ha van egy pl egy Uno-d. Feltöltöd rá az ISP sketch-et , raksz egy 10uF-os kondit a reset és föld közé, utána meg bekötöd az SPI-t és kész. Szemléltetés: [link].
Én így programoztam Attiny85-ösöket. Jók ezek az MCU-k is, de érdemes pl egy Atmega168-ra is ránézni, mert olcsóbbra jön ki. A "P"-s változatok ráadásul picoPower-ösek, szóval a fogyasztásuk is visszafogott. Több láb, 16 kB flash...
-
Pubszon
veterán
Hali.
Ilyen ATtiny programmer van valakinek?
Hogy kell ezzel programozni? -
bacus
őstag
válasz
LógaGéza #2179 üzenetére
"Nagyon bonyolult lenne így összerakni?"
Ez ilyen költői kérdés ugye? Ha tudsz használni bármilyen RAD fejlesztö programot, és megy is a programozás egy alap szinten, akkor nem.
Pl delphihez biztosan van iyen elérhető szinkerék komponens, a puttyt meg lehet hivogatni. (De biztos van soros porti kommunikációra is kész komponens)Ha az arduinos programod kész, mert a választ mégiscsak ott kell leprogramozni, akkor ez a része, mármint a gui igazán gyerek játék lesz.
-
LógaGéza
veterán
válasz
gyapo11 #2149 üzenetére
Na most jutottam el odáig, hogy ezzel foglalkozzak. Sajnos programozásból nem állok a helyzet magaslatán, szinte egész nap a netet dúrtam, hátha találok valami épkézláb megoldást, de sajna nem sikerült, a legközelebbi ez lett volna, itt szép a GUI is, de Windowson nem ismeri fel a COM portot, Ubuntun meg ugyan felismeri, és elvileg csatlakozik is, de... nem történik semmi
Most ez alapján már azt megcsináltam, hogy PuTTY-ba beírt parancsokkal meg tudok csinálni alap dolgokat (ON, OFF, stb), de az igazi ide is a fentihez hasonló GUIs megoldás lenne, hogy egy színkeréken kiválasztani a megfelelő színt, és gombokra effektek elindítása. Nagyon bonyolult lenne így összerakni?
Még egy noob kérdés - mit használ az awtfy.com-os leírásban serial parancsok küldésére az író, vagy esetleg ilyen progira tudok tippet adni? PuTTY nem írja ki, amit pötyögök...
-
Modellezni szeretnék egy áramkört. Power Led + driver(7135) + mosfet ami ráadja a tápot ha kap logikai 5V-ot.
Van ilyen fellelhető program? -
Pubszon
veterán
Üdv.
DHT11 nem tud negatív hőmérsékletet mérni? -
Andreas2
tag
Még csak az alkatrészeket rendeltem meg, de ilyesmit tervezek én is. A http://www.mysensors.org/about/
címen nézd végig a tutorial-t, kész könyvtárakat kapsz az Arduino-hoz, az rPi-re meg mehet fel egy szimpatikus controller (http://www.mysensors.org/controller/) -
Saua
tag
Remélem meglett a probléma, túl kicsi lehet a LED árama. Ha kb. 50 centire teszem az érzékelőt úgy már jó.Lehet a telefon kamerájával azért nem látszik semmi mert túl rövid és gyors az impulzussorozat?
Az előbbi könyvtárból a minták/ IRsendDemo jól megy kb. fél méterig
/* Example program for from IRLib – an Arduino library for infrared encoding and decoding
* Version 1.3 January 2014
* Copyright 2014 by Chris Young http://cyborg5.com
* Based on original example sketch for IRremote library
* Version 0.11 September, 2009
* Copyright 2009 Ken Shirriff
* http://www.righto.com/
*/
#include <IRLib.h>
IRsend My_Sender;
void setup()
{
Serial.begin(9600);
}
void loop() {
if (Serial.read() != -1) {
//send a code every time a character is received from the serial port
//SAMSUNG LE32C530
My_Sender.send(NEC,0xE0E036C9, 32);
}
} -
Saua
tag
Az infra LED egy 120 ohmos ellenállással van sorbakötve, 5 V -ra kötve a telefon kamerája látja a fényét. A hullámhosszával viszont lehet gond, mert nem tudom pontosan milyen típusu, viszont az arduinóhoz kötve is csak fel kellene villanjon.
A soros monitoron úgy látszik, hogy minden rendben. -
tvamos
nagyúr
Nekem a notepad megnyitotta.
Biztosan jól állítottad be a boardot?
Amugy igen, ott is az van, hogy 3.
A LED jól van bekötve? Megfelelő a hullámhossza?
A telefonod gondolom látja a sima tv távirányítót.
Amúgy a PC-n jönnekmrendesen a csomagok?
Bocs, a nagyon alap kérdésekért!
Elő kéne kapni a szkópot a fiókból... -
Saua
tag
A wordpaddal megnyitottam, de csak egy nagy betűhalmazt látok. Nem kellene definiálva legyen, mint ahogy meg van adva, hogy az infra vevő a 11-es lábra van kötve ....int RECV_PIN = 11 ?
itt úgy értem, hogy a 3-as lábra kell kötni (Arduino UNO). Rá is kötöttem, a telefon kamerájával nézem....de nem pislog.
-
tvamos
nagyúr
Próbáld itt megnézni:
* An IR LED must be connected to the appropriate pin.(See IRLibTimer.h) for your machine's timers and erupts.Ha jól látom ott:
/* Arduino Duemilanove, Diecimila, LilyPad, Mini, Fio, etc */
#else
//#define IR_SEND_TIMER1 9
#define IR_SEND_TIMER2 3
#endif //end of setting IR_SEND_TIMER based on hardware detection -
Saua
tag
Sziasztok,
Egy Samsung TV távirányítót szeretnék helyettesíteni arduinóval. Innen letöltöttem az IRLib könyvtárat, és az IRrecord példát szeretném kipróbálni.
A TV távirányító jelét veszi is, de nem világos, hogy az adó LED -et hova kell kötni. Kell módosítani a kódot?Ez a példaprogram:
/* Example program for from IRLib – an Arduino library for infrared encoding and decoding
* Version 1.5 June 2014
* Copyright 2014 by Chris Young http://cyborg5.com
* Based on original example sketch for IRremote library
* Version 0.11 September, 2009
* Copyright 2009 Ken Shirriff
* http://www.righto.com/
*/
/*
* IRrecord: record and play back IR signals
* An IR detector/demodulator must be connected to the input RECV_PIN.
* An IR LED must be connected to the appropriate pin.(See IRLibTimer.h) for your
* machine's timers and erupts.
* Record a value by pointing your remote at the device then send any character
* from the serial monitor to send the recorded value.
* Also demonstrates how to use toggle bits which must be controlled outside
* the library routines.
* The logic is:
* If an IR code is received, record it.
* If a serial character is received, send the IR code.
*/
#include <IRLib.h>
int RECV_PIN = 11;
IRrecv My_Receiver(RECV_PIN);
IRdecode My_Decoder;
IRsend My_Sender;
/*
* Because this version of the library separated the receiver from the decoder,
* technically you would not need to "store" the code outside the decoder object
* for this overly simple example. All of the details would remain in the object.
* However we are going to go ahead and store them just to show you how.
*/
// Storage for the recorded code
IRTYPES codeType; // The type of code
unsigned long codeValue; // The data bits if type is not raw
int codeBits; // The length of the code in bits
// These values are only stored if it's an unknown type and we are going to use
// raw codes to resend the information.
unsigned int rawCodes[RAWBUF]; // The durations if raw
int rawCount; //The number of interval samples
bool GotOne, GotNew;
void setup()
{
GotOne=false; GotNew=false;
codeType=UNKNOWN;
codeValue=0;
Serial.begin(9600);
delay(2000);while(!Serial);//delay for Leonardo
Serial.println(F("Send a code from your remote and we will record it."));
Serial.println(F("Type any character and press enter. We will send the recorded code."));
My_Receiver.enableIRIn(); // Start the receiver
}
// Stores the code for later playback
void storeCode(void) {
GotNew=true;
codeType = My_Decoder.decode_type;
if (codeType == UNKNOWN) {
Serial.println("Received unknown code, saving as raw");
// To store raw codes:
// Drop first value (gap)
// As of v1.3 of IRLib global values are already in microseconds rather than ticks
// They have also been adjusted for overreporting/underreporting of marks and spaces
rawCount = My_Decoder.rawlen-1;
for (int i = 1; i <=rawCount; i++) {
rawCodes[i - 1] = My_Decoder.rawbuf[i];
};
My_Decoder.DumpResults();
codeType=UNKNOWN;
}
else {
Serial.print(F("Received "));
Serial.print(Pnames(codeType));
if (My_Decoder.value == REPEAT) {
// Don't record a NEC repeat value as that's useless.
Serial.println(F("repeat; ignoring."));
}
else {
codeValue = My_Decoder.value;
codeBits = My_Decoder.bits;
}
Serial.print(F(" Value:0x"));
Serial.println(My_Decoder.value, HEX);
}
}
void sendCode(int repeat) {
if(codeType== UNKNOWN) {
// Assume 38 KHz
My_Sender.IRsendRaw::send(rawCodes,rawCount,38);
Serial.println(F("Sent raw"));
return;
}
if( !GotNew ) {//We've already sent this so handle toggle bits
if (codeType == RC5) {
codeValue ^= 0x0800;
}
else if (codeType == RC6) {
codeValue ^= 0x10000;
}
}
GotNew=false;
My_Sender.send(codeType,codeValue,codeBits);
Serial.print(F("Sent "));
Serial.print(Pnames(codeType));
Serial.print(F(" Value:0x"));
Serial.println(codeValue, HEX);
}
void loop() {
if (Serial.read() != -1) {
if(GotOne) {
sendCode(0);
My_Receiver.enableIRIn(); // Re-enable receiver
}
}
else if (My_Receiver.GetResults(&My_Decoder)) {
My_Decoder.decode();
GotOne=true;
storeCode();
delay(1000);
My_Receiver.resume();
}
} -
válasz
Gergosz2 #2161 üzenetére
Igazság az, hogy Pi-vel akartam volna össze hozni, és ugye ott egy GPIO portra kell kötni. amikor meg hívja a DS1820-at, akkor adja vissza az értékeket. Erre kellett volna egy duplex kommunikáció.
De lehet újra gondolom egy arduinoval, ahol (egy másik fórumban ötletként kaptam) egy Arduino Nano triggereli a szenzort, és a kapott értéket küldi el. -
Gergosz2
veterán
nem, ez nem az. Ha oda vissza akarsz kommunikálni, akkor mindegyik odalra kell venned egy adót és vevőt is. Ennek az előnye, hogy pofon egyszerű, egy jó antennával és kellő táppal akár 1 km-re is lehet vele kommunikálni. Van hozzá a VritualWire, meg a Manchester library. Mindegyikkel próbáltam és működik. Radio Head library-val is megy, de szerintem az nem jó , mert túl nagy kódot generál.
Érdemes még megnézned a nrf24l01+-t , ami transciever, szóval oda vissza tudsz vele kommunikálni majd. Ő SPI-on kommunikál az MCU-val. Maga a programozása semmivel sem bonyolultabb. Van hozzá az RF24, RF4 Network és MIRF library. Mindegyikkel próbáltam és mennek. Személy szerint a MIRF-et használom, hogy miért azt nem tudom megmondani, talán azért mert előbb próbáltam ezzel.
(#2160) junhum
Igen , lsd feljebb.
-
junhum
tag
Sziasztok!
Buék!
Valaki foglalkozott már itt az nRF24L01 adóval?
Nekem 6 db adó lenne nano+nRF24L01 ds18B20 és/vagy dht22 szenzor és egy rPi vevő ami megjelenítené az adatokat.Most kezdek majd el vele foglalkozni. Valaki találkozott már hasonlóval? Esetleg épített már?
-
softguner
csendes tag
-
dave0825
őstag
Heló! Mi kell a CD4051-es IC-n kívül még nekem ahhoz, hogy el tudjam kezdeni próbálgatni a dolgot? Tehát van egy Arduino-m, meg veszek egy CD4051-et, ezeken kívül mire lesz még szükségem? Ellenállások, kondik, melyikből mekkora, hány darab, milyenek? Meg akkor a képen a Clock alatti előerősítő kell nekem, meg a rajzon azon kívül még mi? Ma megvenném a dolgokat, hogy neki tudjak állni. Illetve ha ilyen IC nincs a boltban, akkor mivel tudom helyettesíteni, ha lehet?
-
gyapo11
őstag
válasz
LógaGéza #2137 üzenetére
Egy nagyobb sketchből vágtam ki, ez a lényege:
if (Serial.available() > 0)
{
incomingByte = Serial.read();
if(incomingByte==50) //ha 2-es karakter
{
Serial.print(ora);
}
}Ha "2"-est kap a soros porton, akkor kiírja az ora nevű változó tartalmát. Ez a megoldás arra jó, ha egy karakter vezérel valamit. De az angol abc betűi és a számok 36-féle utasítást hordozhatnak, általában elég. Ezeket billentyűzetről könnyen lehet küldeni olyan terminal programmal, aminek nem kell enter, hanem egyből küldi a byte-ot ahogy lenyomtam a gombot..
-
-
Í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);
}
} -
Gergosz2
veterán
válasz
LógaGéza #2137 üzenetére
Ha semmi GUI-t nem akarsz akkor legegyszerűbb ha pl. egy alaplapi USB portra folyamatosan rádugod(már ha van ilyened ).
Utána pl. Putty-on keresztül küldözgeted neki az üzeneteket amire azt csinál amit te felprogramoztál. Soros kommunikációra az Arduino-ban lesz példaprogi.
-
-
Saua
tag
Az "engedély" lenne a változó ami csak egyszer engedi lefutni a blink függvényt. A blink függvény lefutásakor LOW értéket vesz fel, és ezt kellene valahogy felvegye a loop -ban levő engedély változó, hogy ne induljon újra és újra a függvény.
Nem működik ..... ha a hőmérséklet nagyobb vagy kisebb mint a beállított érték akkor nem fut le a blink függvény.
-
-
Saua
tag
Sziasztok,
Egy másodpercenként szeretném kiolvasni a hőmérsékletet és ha a hőmérséklet nagyobb vagy kisebb mint a beállított érték akkor egyszer fusson le a blink függvény. Tehat mindig csak egyszer fusson le mikor a beállított érték alá csökken és mindig csak egyszer mikor az érték fölé emelkedik.
#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;
void setup()
{
pinMode(led1, OUTPUT);
digitalWrite(led1, ledState);
pinMode(ledBLINK, OUTPUT);
Serial.begin(9600);
sensors.begin();
sensors.setResolution(11);
}
void loop()
{
engedely = engedely; // blink5 hivás engedelyezese
if (millis() > lastTemp + 1000 ){
sensors.requestTemperatures();
temperature = sensors.getTempCByIndex(0);
Serial.println(temperature);
if (temperature < (24-0.5 ))
{
ledState = HIGH;
if((ledState == HIGH) && (engedely == HIGH)) blink5();
}
else if (temperature > (24+0.5 ))
{
ledState = LOW;
if((ledState == LOW) && (engedely == HIGH)) 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);
}
engedely = LOW; // további meghívás tiltása
}A hőmérséklet mérés az jó, határértékek elérésekor a led1 müködik…de a blink függvény nem akar működni. Hol rontottam el ?
-
Tankblock
aktív tag
-
LógaGéza
veterán
válasz
dave0825 #2132 üzenetére
Nincs bajom az eBayel, csak egyszerűen túl akarok lenni minél hamarabb (ha öcsém valamit fejébe vesz, nem hagyja abba a b*sztatást addig amíg kész nem vagyok vele...) - meg amúgy se az én pénzem bánja
.
Köszönöm, felveszem ezzel a taggal kapcsolatot, hátha pozitív lesz az eredmény. -
dave0825
őstag
válasz
LógaGéza #2131 üzenetére
Ha ebay-en otthon vagy, inkább onnan rendelj, kevesebb, mint fele ennyiért megúszod darabját. Egyébként kínai utánzatokat használnak itt többen is, gond nélkül. Külön drivert kell föltenni hozzá, de amúgy mennek jól. Előfordulhat persze hibás darab, ahogy mindennél.
(#2133) LógaGéza: Ja jó.
-
LógaGéza
veterán
válasz
Tankblock #2129 üzenetére
Köszönöm a válaszod!
A Vaterán kapható Arduinok megfelelnek erre a célra (nem tudom mennyi a minőségbeli különbség az eredeti, és a kamu között, valamint, hogy honnan ismerhető fel a fake)? Ezt pl át tudnám személyesen venni. Gondolom ez még 5 méterrel is boldogul.
A táp külön lesz természetesen.
Mivel a fő felhasználó öcsém lesz, nem létezik valami egyszerű GUIs program, hogy tudja állítani a színet, esetleg a megjelenítési módot?
-
bacus
őstag
válasz
LógaGéza #2128 üzenetére
Sima szinhez filléres rgb led szalag, filléres vezérlövel is elég. A futófényhez, mozgo effekthez, stb kell csak a cimezhetö szalag.
A vezérléshez 1 db kimenet kell, igy bármelyik arduino board jó. Ha most kezded akkor nano-t ajánlom. Többet rendelj, néha van egy két hibás..
-
Tankblock
aktív tag
válasz
LógaGéza #2128 üzenetére
Hello,
Egy Nano is bőven megteszi.
Adafruit_NeoPixel könyvtárral meg tudod oldani egyszerűen.Youtube on keress rá erre: "Quick Project: WS2812B RGB Colour LED Pixel String"
a tápegységet azért számold át rendesen.
60mA * 60 led * 3m = 10,8 A 5V mellett. (ha jól számolok). Ha bírja a számítógép tápegysége akkor arra is lehet kötni, de ne az arduinon keresztül tápold meg :-)
USB-n keresztül Serial Connection meg lehet kommunikálni az arduinoval.
Remélem segítettem.
-
LógaGéza
veterán
Üdv!
Feldobnám öcsém gépét egy kicsit, kapna max 3 méternyi WS2812b 60led/m szalagot, és kéne hozzá valami vezérlőt minél olcsóbban megoldani. Van ez a NZXT Hue nevű csoda, hasonlót szeretnék, csak jobb minőségben. Vezérlőnek egy Arduinora gondoltam, csak mivel még sose dolgoztam ilyennel, és látom, hogy van belőle elég sok verzió, ezért kezdetnek ehhez szeretnék segítséget kérni, hogy melyik board lenne nekem jó erre a feladatra, esetleg mi kellhet még hozzá pluszba, hogy működőképes legyen az elképzelés. Nem akarok olyan tekergetős fizikai modult, elég lenne, ha PC-ről lehet állítani a fényerőt, a színt, esetleg színváltós futófényt csinálni.BUÉK mindenkinek!
-
bacus
őstag
válasz
dave0825 #2120 üzenetére
ezt megveheted DIY kitben a bangood.com, sőt van ennél jobb kit is
tanulni is jó, vagy esetleg átnézed mi használható ezekből és épitesz egy teljesen egyedit.
-
bacus
őstag
válasz
dave0825 #2117 üzenetére
ez a nyák. 13db jégcsap fért fel egy 100x160 mm-es nyákra.
A vezérlést egy nano csinálja, egy próbapanelre téve, a táp pedig egy kisérleti jelleggel vásárolt 1A-es usb.. azért kisérleti, mert ramiris.eu -nál vettem 4db-t, darabját 286 ft nettóért.Nem hittem, hogy ennyi pénzért még működni is fog, de rátettem a műterhelést, és ha az 1A-nél már nincs is meg az 5V, de ide alkalmas volt.
Végül egy dolog nem volt itthon elég, átlátszó zsugor csőből 12/6 mm ha jól emlékszem, csak 1 m volt itthon, igy 10 db jégcsap készült el első körben, amit 25.-én a saját fenyőnkre is elkezdtem, ide nem került zsugor, és csak a maradék 3 db jégcsap ment egyelőre.
Nekem volt hozzá mindenem, mert egy másik projekthez rendeltem 200 db ledet. (most valamiért 2x áron van az ebayen, vagy az emlékeim szerint volt sokkal olcsóbb.) Ilyen jégcsapot én nem láttam sehol, de nem állitom, hogy én találtam ki. 23 reggel 10h-kor fogalmazódott meg a gondolat, hogy ne üres kézzel menjek szüleimhez, mivel egész addig dolgoztam, csak a nejem által vett szokvány dolgok voltak. (pia, illatszer, stb).
Az idő rövidsége miatt, vagy egy órát hezitáltam, hogy neki kezdjek e, de estére meglett a hardver, és éjfél körül már a végleges kód. (amit persze még reggel átirtam) Mindeközben a fenyőfánk is hazakerült, sőt be is állitottam, bevásárlásnál is vállaltam a málhás szamár szerepet, stb.
A kód átirására csak azért került sor, mert reggel nejem megnézte, majd közölte, hogy jó jó, de nem lehetne egy szinűre csinálni, mert igy túl szines. (ahogy a második videon is látszik, csak felaggattam valahova, nem a fán látta), igy került egy gomb is a dobozkára, amivel lehet váltogatni 5 szin között. Ja igen, először több, összesen 10 féle szint deklaráltam, sőt, ezeket is egy palettáról random kiválasztva, de nem adott semmi plusszt, igy a végén 5 szin váltakozik random, piros,kék,zöld,fehér,sárga.
ws 2811 az a chip, ami a vezérlést csinálja, ezt lehet külön kapni, led nélkül, smd változatban biztosan, 2812b szerintem maga a led, amibe bele van integrálva a 2811 vezérlő ic.
-
dave0825
őstag
Órajelgenerátor megvan, de azon kívül melyik kell, ami az alatt van az a kicsi? Mert ha a rajz közepét nézem, és onnan a bal, akkor a nagy középsőnek is kell a fele.
Ez jövő hétre marad már mindenképp, a héten már nincsenek nyitva boltok, ma meg már nem állok neki, úgyhogy jövő héten jelentkezek újra, biztos, hogy lesz kérdésem.
Köszi a segítséget!És
BOLDOG ÚJ ÉVET MINDENKINEK!!
-
zka67
őstag
válasz
dave0825 #2117 üzenetére
Szia, ez alapján szerintem el lehet indulni.
Ebből neked csak a rajz bal oldala kell az órajel generátor nélkül. Mivel az ardiunonak ha jól tudom, csak 6 ADC bemenete van, ezért szükséged lesz neked is analóg kapcsolókra, mert itt tíz jelet kell feldolgoznod. Szerintem jobban jársz, ha CD4051-es IC-t használsz (2db-ot, filléress cucc), mert akkor összesen 3 kimenetre lesz szükséged a bemenet kiválasztásához, és 2 ADC bemenetre.
A frekvenciák: 32Hz, 64Hz, 125Hz, 250Hz, 500Hz, 1kHz, 2kHz, 4kHz, 8kHz és 16kHz, fentől lefele.
Szerintem nyugodtan nekiállhatsz egy-két csatornával kísérletezni (pl. a 125Hz és 1kHz).
Ráteszel 1db CD4051-et, hogy a bemenetek választását is ki tudd próbálni.
Soros porton pedig kiíratod az aktuális értékeket. -
tvamos
nagyúr
-
dave0825
őstag
Gergosz2: ha segítetek, megcsinálom én azokat a szűrőket, de sosem csináltam, fogalmam nincs, hogy hogy kell.
Én a ledeket mindig is szerettem bütykölgetni, még kis koromban, most meg, hogy rendeltem MAX7219-eket, gondolkodtam, hogy mit lehetne velük csinálni, aztán jött ez a ledszalagos EQ, bár azzal nem célszerű, de az ötlet maradt.bacus: jégcsapokat akartam én is csinálni, jó lett volna, ha olcsóbban kijövök, mint a kész vásárlásával, meg szívesen is csináltam volna, de karácsonyig nem lett ugye meg, szóval hagytam. Boltban látott apám jégcsapokat, 10db, db-onként 12 leddel, onnan jött az ötlet itthonra nekem is. Videót szívesen néznék róla, meg a kódot is megnézném, tanulnék belőle, még nem használtam ilyen címezhető szalagot, tőled hallottam először még pár hete/hónapja.
Amúgy mi a különbség a WS2811 és WS2812 között? Én 12-t láttam több helyen videón, 11-et nem, vagy csak elírtad? 1 helyen talán máshol is láttam 11-et, bár nem biztos. -
bacus
őstag
válasz
dave0825 #2113 üzenetére
Idén nagy sláger volt nálunk ilyen ledekböl (ws 2811) csináltam egyedi karácsonyfa jégcsapokat. 9 db led egy panelen, ez egy "jégcsap" , 10 db jégcsap, amin "potyognak" a fények. A jégcsapok szine random változik, egymás melletti jégcsapok potyogása el van tolva 3 leddel, hogy ne egyszerre aludjanak ki.
Ha igény van rá, teszek fel videot yt-ra, meg kodot is, nyák tervet, stb.Még csinálok párat, mert bejött
-
Gergosz2
veterán
válasz
dave0825 #2113 üzenetére
Legegyszerűbb ha megoldás, ha hangolt RC szűrüket raksz össze kondik-ból meg ellenállásokból Ezek gyakorlatilag gombokért megvannak. Ha kicsit tornázol még rajta, nem sokkal bonyolultabb ME-s kapcsolásokat is összerakhatsz.
Mi ez a led mánia amúgy?
Mondjuk én is most akarok venni kb 5 méter led szalagot , de nem ilyen célra, hanem, hogy a TV mögé ragasszam Most vettünk egy led TV-t és érezni, hogyha az ember teljesen sötét szobában nézi, akkor bizony megterheli a szemet. Már csak az lenne a kérdés, hogy milyen színűt vegyek? Valakinek ilyenben van valami tapasztalata? Én simán warm white-ra gondoltam.
(#2114) peter1998
Ez jóféle, nekem is van itthon pár belőle. Egyszerű , csak I2C-re felfűzöd és felprogramozod azt megy is. Van amelyik már több mint egy éve megy , és még most is pontos.
-
dave0825
őstag
Ez a link tetszik, akkor rendelek mégis egy ilyen címezhető 1m-es szalagot, egyelőre elég lesz akkora. Eljátszogatok vele, ismerkedek vele, valamire meg majd csak jó lesz.
Ehhez a sávszűrős dolog összeépítéséhez (ha szépen megkérek mindenkit itt, akkor a ti segítségetekkel) hány skillpointtal kell rendelkeznem?
És akkor ehhez mindenképp ilyen címezhető szalag kell, plusz a sávszűrők alkatrészei?
A videó elején mutatja az Arduino-t, meg a programot is (vagy az utána linkelt videóra gondolsz, ahol a járólap közé rakták a szalagokat? Ott tényleg, én sem látok Arduiono-t.), viszont most látom a leírásban, hogy a zöld ledek tényleg nem jók ("Unfortunately some of the Green leds seem to malfunction :p but the result is quite good."), úgyhogy már érthető.
-
zka67
őstag
válasz
dave0825 #2111 üzenetére
Szia, először is nem poén volt, hanem ha jobban megnézed a videót, a középső zöld ledek egyáltalán nem világítanak. A linkelt videódon én nem látom, hogy arduinot használnának.
De:
Nagyjából erről beszéltem, amit itt az Adafruit_NeoPixel.cpp-ben találsz
Szerintem ha már kigondoltad, csináld is meg, ne add fel!
A sávszűrők alkatrészköltsége kevesebb, mint 500 Ft.
Ha hobbiból csinálod, munkaidő költsége 0 Ft.
Tapasztalatszerzés: felbecsülhetetlen érték! -
dave0825
őstag
Hű, köszönöm a választ mindenkinek. Hát ilyen több ezreket nem szeretnék rá költeni, úgyhogy szerintem hagyom ezt a projektet, pláne, ha ennyire bonyolult (analóg szűrő, r-c szűrő, nem csináltam még ilyeneket
).
zka67: Poénból írtad, hogy rosszak a led-ek, ugye?
Mert előtte-utána működnek, szóval ötlet, hogy hogy kapcsolhatta ki? A másik, hogy azt hogy érted, hogy (3 hogy, szép magyar mondat lett
) a chip időzítései miatt komolyabban kellene programot írnom? Igazából nem használtam még ilyen címezhető led szalagot, úgyhogy nem igazán tudom, hogy működik. Én úgy képzeltem el, hogy adott valami library, és abban parancsok, hogy hányadik led-et szeretném bekapcsolni, vagy ilyesmi. Ennél bonyolultabb?
Pl. ráakadtam egy ilyen videóra, itt is futófényt, meg csomó mindent csináltak led szalaggal, akkor az is címezhetővel van, és ott is mélyen belenyúltak a programozásba?
-
zka67
őstag
válasz
dave0825 #2102 üzenetére
Szia,
Akkor azt hogy csinálja, hogy 1:24-nél a középső 6 ledet kikapcsolja?
Úgy, hogy a középső zöld ledek rosszak, egyáltalán nem világítanak
A WS2812B-vel meg lehet csinálni, de ehhez kevés lesz a digitalWrite az arduinon, itt már assembly szinten kell majd programoznod a chip időzítései miatt.
Az EQ-t én úgy csinálnám meg, hogy csinálnék egy 7 vagy akárhány sávos sávszűrőket, analóg módon, ellenállásokkal, kondikkal és LM324-el vagy hasonló IC-vel. Az IC kimenetére tennék egy diódát és egy kondi+ellenállást, ez tárolná az aktuális hangerőt azon a sávon. Aztán mehet az ADC-be.
Ha viszont kevés lenne az arduino a feladathoz (itt a led szalagok frissítésére gondolok, az időzítésekre, mert elég precíz időzítést igényel az IC), akkor én azt javasolnám neked, hogy mozdulj inkább az ARM procik irányába. Kezdésnek szerintem ezt választhatnád: ARM Cortex-M0 Core Module LPC1114 Development
Ehhez van Keil IDE, full szoftveres debug (azaz nem is kell hozzá az áramkör), simán le tudod tölteni a programot soros porton keresztül, nincs vacakolás, hogy van-e rajta bootloader vagy milyen verziójú van, mert benne van a chip-ben. Az IC ugyan 3.3V-ról jár, de az összes IO lába 5V toleráns, azaz nem kell az 5V-os cuccokhoz se level shifter. 48MHz-es, Cortex-M0 mag van benne, ami jelen esetben lényegtelen, tanulni, gyakorolni szerintem nagyon jó.
Ha érdekel a dolog, szívesen segítek benne, mind szoftveresen, mind hardveresen.
Sőt, van is egy ilyen modulom, ha érdekel, eladó, kb. 200x volt írva a proci. (10000-t simán kibír) -
gyapo11
őstag
válasz
dave0825 #2099 üzenetére
Legegyszerűbb lenne a hagyományos fényorgona, 3 csatorna, 3 ledszalag, és a ledszalagok minden ledje egyszerre világít, csak a fényerő változik a zene egyes frekvenciatartományainak erejétől függően.
Az fft-hez szerintem is gyenge az arduino, viszont külső alkatrészekkel könnyen felépíthetők a szűrők, ezt többtíz évvel ezelőtt is így csináltuk, csak akkor tirisztorok kapcsolgatták az izzókat. A csatornák száma is növelhető, de akkor több alkatrész kell a szűrőkhöz, és gondolom növekedne az átfedés az egyes csatornák között, az r-c szűrők nem túl keskeny sávot képesek szűrni. -
Gergosz2
veterán
Igen-igen, jogos.
Amit leakartam írni, hogy ott az Energia mi az Arduino fejlesztőkörnyezetére hasonlít, szinte ugyan az , csak piros. Ott CCS , meg a CCS Cloud, ha az ember komolyabban akar vele foglalkozni. Na azokban van minden Debugger, Emulator stb.
(#2106) dave0825
TI-s cuccoknak elég jó supportja van, de ha az ember pl Matlab Coder-rel, Simulink Coder-rel, vagy Embeded Coder-rel találkozik, akkor elég hamar hallani fog felőlük. Arduinohoz is adtak ki ilyen support packaget, próbáltam is működött is.
Code Composer Studio nem lesz jó AVR cuccokhoz. CCS AVR-es megfelelője az AVR studio.
-
tvamos
nagyúr
válasz
dave0825 #2102 üzenetére
Én úgy gondolom, ha összerakod azt a kapcsolást a 4 dróttal, meg az RGB LED-ekkel, az nem fog így működni, de legalábbis nem fogod őket egyessével vezérelni.
(#2104) dave0825 válasza Gergosz2 (#2103) üzenetére
A TI launchpad IDE, az Arduino nem egy komplett IDE, mert nincs benne debugger. A Code Composer Studio egy komplett IDE sokkal jobb, mint az Arduino framework ilyen szempontból. -
dave0825
őstag
Akkor azt hogy csinálja, hogy 1:24-nél a középső 6 ledet kikapcsolja? Szóval lehet olyat, hogy pár ledet bekapcsolni, párat ki, vagy nem? Ha ilyet lehet vele, az már nekem elég, mert akkor csinálok egy olyat, amit haverommal, csak led szalaggal, és úgy, hogy középről villog a 2 széle felé.
Új hozzászólás Aktív témák
Hirdetés
- Debrecen és környéke adok-veszek-beszélgetek
- Bittorrent topik
- bitpork: MOD Júni 13 Augusztus 2- szombat jelen állás szerint.
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Milyen széket vegyek?
- Mobil flották
- Sony MILC fényképezőgépcsalád
- Óra topik
- Intel Core i5 / i7 / i9 "Alder Lake-Raptor Lake/Refresh" (LGA1700)
- Kerékpársportok
- További aktív témák...
- iKing.Hu - Samsung S25 Ultra - Titanium Black - Használt, karcmentes
- Apple Ipad 10.generáció
- Új HP Pavilion x360 14-ek Érintős hajtogatós Laptop Tab 14" -35% i5-1335U 8/512 FHD IPS Iris Xe
- RTX 4080 SUPER,16GB. Ryzen 7 7800X3D, 32 RAM Fury RGB! Garancia!
- Asztali PC , i7 9700K , RX 5700 XT , 32GB DDR4 , 500GB NVME , 1TB HDD
- BESZÁMÍTÁS! MSI B450M R5 5500 16GB DDR4 512GB SSD RX 5700XT 8GB Rampage SHIVA Chieftec 600W
- ÁRGARANCIA! Épített KomPhone Intel i7 14700KF 32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- ÁRGARANCIA! Épített KomPhone Ryzen 5 7600X 32/64GB RTX 5070 12GB GAMER PC termékbeszámítással
- ÁRGARANCIA!Épített KomPhone Ryzen 7 9800X3D 32/64GB RAM RX 9070 XT 16GB GAMER PC termékbeszámítással
- iKing.Hu - Honor Magic 7 Pro - Black - Használt, karcmentes
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest