nicolasoto
Vytvořené odpovědi
-
AutorPříspěvky
-
tribal.cz
ÚčastníkAno tranzistorem si pouze sepneš potřebné. Pokusím se ti to popsat a ještě ti dám odkaz na itnetwork.cz kde je o tom článek takže. K rozsvícení využiješ jiný externí zdroj, arduinem budeš jen spínat. Tranzistor má tři vývody báze, colector a emitor.Bázi připojíš na nějaký pin třeba 5, emitor dáš na GND vývod diody a colector na GND zdroje. Mezi bázi a arduino si ještě bouchni diodu jako pojistku proti proražení tranzistoru. Takovýto obvod je bezpečný, poté si stačí jen nějaký kód. Třeba upravený příklad BLINK z arduino IDE
void setup() { pinMode(5, OUTPUT); } void loop() { digitalWrite(5, HIGH); delay(1000); digitalWrite(5, LOW); delay(1000); }
Tady máš ještě ten odkaz je to tam i schéma tak to líp pochopíš než z mého popisu
Edit: promiň zapomněl jsem odkaz 😀 http://www.itnetwork.cz/hardware-pc/arduino/arduino-spinani-velke-zateze
posjirka
Účastníkok hlavní je spokojenost .)
posjirka
Účastníkintegrovaný obvod nebli šváb je jen shluk zsiučástek v 1 pouzdru a převládá tam saoučástka zvanaá tranzistor. Když nepochopíš tranzitor tak tě šváb nevytrhně….
Navíc bylo určutě myšleno tranzistor jako spínač. Žádné v/a charakteristiky, žádný pracovní bod, jen zapni vynpi.klachma
ÚčastníkBohužel tranzistor je součástka, kterou asi nejsem schopnej pochopit 🙁 Učitel byl debil, co by snad nedokázal vysvětlit ani funkci rezistoru a všechny mé pokusy o samostudium zatím skončily krachem. Za to jsme měli skvělého učitele na číslicovku, proto mě napadlo řešení nějakým švábem 🙂
tribal.cz
ÚčastníkPokud se jedná o něco co přesahuje hodnoty jen trochu jako ve tvém případě tak bych použil tranzistor. Pokud se jedná o něco většího tak bych obvod rozdělil a externí bych připojil na relé je to jednoduché a čisté řešení.
Le_Ze
ÚčastníkAno mam 4 rele a 4 timery a jednu splečnou funkcí pro vypinaní
posjirka
Účastníkještě si vyzkoušej jestli ti dovolí pracovat dál s jiným pinem.
myslím tím, když aktivuješ 1 pin na zpoždění, můžeš aktivovat hned i druhý?
Myslím, že minimálně budeš muset udělat druhou instanci timer aby se ti nemíchali proměnné z knihovny….
originální řešení je uděláno jako aktivace časovače a ve smyčce loop si aktualizuje strojní čas do rozhodovacího procesu.Aleš
ÚčastníkTakhle:
temp0 = DS18B20.getTempCByIndex(0); // první čidlo
temp1 = DS18B20.getTempCByIndex(1); // druhé čidlo, atd..char buf[24];
String strTemp0 = dtostrf(temp0, 6, 2, buf);
String strTemp1 = dtostrf(temp1, 6, 2, buf);
….Odeslání:
url += „&field1=“;
url += strTemp0; //String(temp0);
url += „&field2=“;
url += strTemp1; //String(temp1);
…..terje
ÚčastníkJo, ty čidla by byly na jedné sběrnici.
terje
ÚčastníkZdravím chlapi, mám prosbu. Zprovoznil jsem ESP8266 s jedním čidlem(ds18b20) na thingspeak. Potřeboval bych k tomu modulu připojit více čidel(např.4).V HW se celkem vyznám, ale SW mi dělá potíže. Dík za radu.
Tady je kód:/*
* This sketch sends data via HTTP GET requests to data.sparkfun.com service.
*
* You need to get streamId and privateKey at data.sparkfun.com and paste them
* below. Or just customize this script to talk to other HTTP servers.
*
*/#include <ESP8266WiFi.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <stdlib_noniso.h>#define ONE_WIRE_BUS 2 // DS18B20 pin
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature DS18B20(&oneWire);const char* ssid = „terje“;
const char* password = „xxxxx“;const char* host = „api.thingspeak.com“;
const char* APIkey = „xxxxxxxxxxxx“;float oldTemp;
void setup() {
Serial.begin(115200);
delay(10);// We start by connecting to a WiFi network
Serial.println();
Serial.println();
Serial.print(„Connecting to „);
Serial.println(ssid);WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(„.“);
}Serial.println(„“);
Serial.println(„WiFi connected“);
Serial.println(„IP address: „);
Serial.println(WiFi.localIP());
}void loop() {
delay(30000);float temp;
DS18B20.requestTemperatures();
temp = DS18B20.getTempCByIndex(0);
Serial.print(„Temperature: „);
Serial.println(temp);char charVal[12];
dtostrf(temp, 8, 2, charVal);
Serial.print(„connecting to „);
Serial.println(host);// Use WiFiClient class to create TCP connections
WiFiClient client;
const int httpPort = 80;
if (!client.connect(host, httpPort)) {
Serial.println(„connection failed“);
return;
}// We now create a URI for the request
String url = „/update?key=“;
url += APIkey;
url += „&field1=“;
url += charVal;//String(temp);Serial.print(„Requesting URL: „);
Serial.println(url);// This will send the request to the server
client.print(String(„GET „) + url + “ HTTP/1.1\r\n“ +
„Host: “ + host + „\r\n“ +
„Connection: close\r\n\r\n“);
delay(10);// Read all the lines of the reply from server and print them to Serial
while (client.available()) {
String line = client.readStringUntil(‚\r‘);
Serial.print(line);
}Serial.println();
Serial.println(„closing connection“);
}Le_Ze
ÚčastníkTak vyřešene a odzkoušené přes tu knihovnu timer :).
Přimo v if zapnu pin.
digitalWrite(pin, HIGH);
t.after(10 * 60 * 10000, vypnirele);
a pak se po určité době spusti funkce, která ho vypne.
Pokud si při volaní funkce pošlu i čislo pinu, postači mi 1 funkce pro všechny rele.Le_Ze
ÚčastníkTy činske relay moduly sepinají při LOW
Při spuštění arduina je na pinu HIGHPošlu přes serial 1
pin se přepne na Low na 10 vteřin a rele sepne.
Pak je na pinu HIGH 10 vteřin.
Po 10 vteřinach zase LOW a už se to nepřekopí a rele zustava furt seple.#include "Timer.h" Timer t; int pin = 4; void setup() { Serial.begin(9600); pinMode(pin,INPUT_PULLUP); pinMode(pin, OUTPUT); } void loop() { int val = Serial.parseInt(); if(val == 1){ t.pulse(pin, 10 * 60 * 1000, LOW); } t.update(); }
posjirka
Účastníkjo to uvodní 10s přepnutí může mít 2 příčiny:
1, start Arduina kdy bootloader čeká na rest pro nahrání programu nebo pokračuje dál v aktuálním programu
2, knihovna timer má na začátku reset proměnných a registru. To chvilku trvá …posjirka
ÚčastníkPožíváš knihovny, které nevíš jak fungují a proto se pak divíš.
Navíc je to jak jít s bazukou na komára. Jde to mnohem elegantnějí:// zpozdeni tlacitka // v1 // by JP 2016 // program po stisku tlačítka rozsvítí LED diodu a nechá jí 5s rozsvícenou, pak ji zhasne a opět čeká na stisk tlačítka const int LED = 13; // led dioda const int TLACITKO = 10; // tlacitko proti zemi boolean CEKAM = false; // kdyz je true tak ceka na zhasnuti. unsigned long OLDTIME = 0; // strojní čas posledního stitku tlačítka unsigned long ZPOZDENI = 5000; // čas zpoždění zahsnutí LED diody v ms. unsigned long MYTIME = 0; // aktuální čas -zpoždění void setup() { pinMode(LED, OUTPUT); // nastaveni jako vystup pinMode(TLACITKO, INPUT_PULLUP); // nastaveni jako vystup OLDTIME = millis();// zapamatuj si aktuální strojní čas } void loop() { digitalWrite(LED, CEKAM); // zapis stav na LED if (digitalRead(TLACITKO) == 0) { // při stisku tlačitka if (CEKAM == false) { // a zhasnuté LED diodě CEKAM = true; // změn stav OLDTIME = millis(); // zapamatuj aktuální strojový čas } } if (CEKAM == true) { MYTIME = millis()-ZPOZDENI; // výpočet času zpoždění if (MYTIME > OLDTIME){ // porovnání aktuálního čas a OLDTIME se zpožděním CEKAM = false; // když překročím zpoždění zhasni LED diodu } } }
jardazov
ÚčastníkDobrý den,
Mám stejný problém. Desku mám tuto Mega2560 asi týden:
http://www.banggood.com/ATmega2560-Funduino-Mega-2560-Arduino-Compatible-Improved-Version-p-928760.htmlTaky mám v plánu to samé – USB joystick.
Ale nejde mi nahrát jiný FW. Mám Windows 10.
Nejspíš dělám něco špatně.Budu rád za radu.
Le_Ze
ÚčastníkNejjednodušší řešení by bylo tady.
https://playground.arduino.cc/Code/Timer
Do kažede podminky dat t.pulse.#include "Timer.h" Timer t; int pin = 3; void setup() { pinMode(pin, OUTPUT); t.pulse(pin, 10 * 60 * 1000, HIGH); // 10 minutes } void loop() { t.update(); }
Proč toto nefunguje jak má?
Zapnu arduino.
Po najetí mam na pinu 3 10 vteřin HIGH
Pak 10 vteřin LOW
A pak až se začne odpočitavat těch 10 minut HIGHposjirka
Účastníkdej sem jednoduchý kod s funkcionalitou co potřebuješ a já ti řeknu jak to upravit.
Chápeš, že se ptáš ze svého pohledu na věc …..? Nevidím ti do hlavy, tak ti nemůžu odpovědět. Navíc arduino nemá thead. Je jednoprocesorový 1 vláknový. Tudíž nemůže řešit 2 paralelní procesy. umí pouze mezi procesy přepínat a to ještě na základě interních časovaču resp. na principu přerušení. Jsme tu v „c++“ deplhi je trochu jinde.Le_Ze
ÚčastníkNo dalkač mi vrací kod jako číslo
Podmínkou IF hlídám ten správný.
Pokud je pominka splněna tedy spustit třeba thead.Nějak však nemohu pochopit princip toho vlakna.
Proč je u vlakna setInterval()
Ve škole jsme měli delphi a bud bylo vlakno co vykonalo svou funkcí a ukončilo se, nebo vlakno ktere běželo furt dokola.
Interval byl u timeru.A i kdybych to dal s tym theadem, nevím jak vyřešit to druhe zmačknutí po minutě
posjirka
Účastníkarduino to má trochu zvláště udělané. Vin můžeš použít jak pro napájení tak jako přemostění napájecího napětí.
Stejně tak můžeš obejít stabilizátor 5V a připojit 5V přímo na pin 5V a obejdeš stabilizátor. Jen bacha jakou verzi Arduina používáš, né všechny mají správně zapojené stabilizátory s ochranou diodou(zvlášt made in china)posjirka
Účastníkno podle tvého přísvěku z vedlejšího vlákna z toho taháš 0,7A.
Když si vezmeš do uvahy, že uvnitř arduina je to lineární stabilizátor na 5V tak máš výkonovou ztrátu 0,7Ax7V = 4,9W.
Podívej se jakou to má chladící plochu a vysvětlení je na světě.
Neoporučuje se zatěžovat více než 0,5A a to ještě krátkodobě.
Ten interní (v arduinu) stabilizátor je jen pomocný pro vlastní chod.
Pokud chceš něco víc, musíš jít externím stabilizátorem.
Já jsem na Dinduinu používal 2 stabilizátory na 5V 150mA.
Jeden pro chod atmegy a druhý pro externí aplikace.
Relé jsem spínal přímo napíjecí napětím, resp. vybíral jsem relé na 9V a spouštěl je 7V.
Ty cestičky na desce arduina taky můžou sublimovat 🙂posjirka
ÚčastníkSamozřejmě že to jde a jak na to?
No doplnit do kodu funkci cyklovače.
Co ti jiného mám napsat bez kodu ….k75v
ÚčastníkAha dobre už budem vedieť 😀 ale funguje to aj tak 😀
tribal.cz
ÚčastníkNo zítra to skusím a dám echo. Dst možná napíšu článek snad to pomůže i někomu jinýmu
Aleš
ÚčastníkPodle mě by to jít mělo, i když jsem to nezkoušel. Já spíš už delší dobu přemýšlím, jestli by to nešlo flashovat tak, že by se vytvořil jednoduchý prográmek do Arduina, který by převáděl data z TX0 a RX0 na TX1 a RX1 (u MEGA) nebo z TX0 a RX0 na Software.serial (u UNA), a flashovat to tímto způsobem. Ale ještě jsem na to neměl čas
tribal.cz
ÚčastníkAis už vím kde je chyba vše co jsem kde našel se věnovalo nodeMcu, jinak zajímalo by mne zda lze flashovat pomocí desky una bez čipu
Aleš
ÚčastníkTo je celkem běžný stav. V těch modulech je nahrané bůhví co za firmware. Podařilo se mi oživit pouze jeden poslední, který mi přišel před vánocema. Ty předchozí, (cca 5ks) jsem nerozchodil s tím, co bylo uvnitř nahrané. Je potřeba tam rovnou flashnout nějaký firmware, o kterém víš, jak funguje. Pro flashování je potřeba použít (esptool.py a odzkoušené firmware najdeš na mojí stránce http://xanadu.khnet.info/esp8266.php
posjirka
Účastníkještě není špatný tento :
https://123d.circuits.io/lab
je sice online ale pobral mi i to co ten první ne. Stačí se jen zaregistrovat …posjirka
Účastníkjá jsem spíš na HW ale v poslední době jsem nějákej línej to pořád předělaávat, tak pro jednoduché věci používám toto:
https://www.sites.google.com/site/unoardusim/homeHlavně si zbytečně neničním paměť přepisováním nových programu.
Kdyby to ještě mělo LCD display tak se vykašlu na cokoliv jiného 🙂Zbyšek Voda
ÚčastníkDobrý den,
na jakých rychlostech jste s moduly komunikoval?
Podle verze firmware se rychlost může lišit: 9600, 57600, 115200.Aleš
ÚčastníkSimulátor? To by mě zajímalo. Jaký používáte?
-
AutorPříspěvky