
Prosba o pomoc.
Pravidla fóra
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Prosba o pomoc.
Zdravím, jsem nováček a potřeboval bych radu. Mám Arduino NANO a s ním potřebuji spínat relé. Na 7 pinu mám Relé které potřebuji aby se hned po sepnutí napájení seplo, dále pak mám na pinu 5 přiveden 5V impuls a potřeboval bych aby arduino to relé vypnulo pokud se dostane na tento pin impuls delší jak 3s. Jak by jste to napsali ? Poradí někdo ?
Díky.

Re: Prosba o pomoc.
WTF, co je to za název vlákna?? Název je od toho, aby se alespoň z části pochopilo co bude uvnitř!
Já bych to napsal takhle: V setup nastavit výstup na zapnuto. Po stisku tlačítka ( hlídat náběžnou hranu) uložit do nějaké proměnné aktuální čas. Pod tím ve smyčce loop (pokud je tlačítko stisknuto) hlídat, jestli je aktuální čas o více než tři sekundy vyšší než uložený čas. Pokud ano, tak vypnout výstup.
Já bych to napsal takhle: V setup nastavit výstup na zapnuto. Po stisku tlačítka ( hlídat náběžnou hranu) uložit do nějaké proměnné aktuální čas. Pod tím ve smyčce loop (pokud je tlačítko stisknuto) hlídat, jestli je aktuální čas o více než tři sekundy vyšší než uložený čas. Pokud ano, tak vypnout výstup.
Re: Prosba o pomoc.
Za nadpis se omlouvám, bohužel ho již nemohu změnit. Bohužel netuším jak takový kód napsat, zatím Wiring neumím dost na to abych znal takové příkazy. Teoreticky by stačilo i porovnání pomocí nějakého pokud si pamatuji "pulseIn".
Potřeboval bych najít nějakého dobráka který by byl schopen ten kod napsat tak abych si ho zpětně mohl rozebrat a zároveň ho i použí.
Potřeboval bych najít nějakého dobráka který by byl schopen ten kod napsat tak abych si ho zpětně mohl rozebrat a zároveň ho i použí.

Re: Prosba o pomoc.
Dál jsem se zatím nedostal protože žádný kóód v loop mi nefungoval.
const int blinkr = 3;
const int rele = 2;
void setup() {
pinMode (blinkr, INPUT);
digitalWrite (rele, HIGH);
pinMode (rele, OUTPUT);
}
void loop() {
}
const int blinkr = 3;
const int rele = 2;
void setup() {
pinMode (blinkr, INPUT);
digitalWrite (rele, HIGH);
pinMode (rele, OUTPUT);
}
void loop() {
}
Re: Prosba o pomoc.
Dobrý den, toto je nejprimitivnější řešení, které mě napadlo. Nezkoušel jsem ho (nemám teď na čem otestovat), ale třeba bude fungovat 
Jistě by to šlo i jinak (přerušení, ...), ale takto je to asi nejpřímočařejší.

Kód: Vybrat vše
const int blinkr = 3;
const int rele = 2;
boolean lastState = false;
unsigned long onTime = 0; // čas nástupné hrany pulzu
void setup() {
pinMode (blinkr, INPUT);
pinMode (rele, OUTPUT);
digitalWrite (rele, HIGH);
}
void loop() {
boolean state = digitalRead(blinkr);
if(state != lastState){ //došlo ke změně
if(state == HIGH){
onTime = millis();
}
lastState = state;
}
if(state == HIGH && millis() - onTime > 3000){
digitalWrite(rele, LOW);
}
}
Re: Prosba o pomoc.
Děkujíííííí funguje
Jestli mohu ještě poprosit trochu vysvětlit funkci boolean
a unsignet long ..... Četl jsem si o nich ale moc mi to do hlavy neleze.
Ještě jednou Díky.

Jestli mohu ještě poprosit trochu vysvětlit funkci boolean

Ještě jednou Díky.

Re: Prosba o pomoc.
Dobrý den, jsem rád, že funguje 
Boolean, unsigned long, int, ... to všechno jsou datové typy.
Psal jsem o nich ve článku https://arduino.cz/zakladni-struktury-jazyka-wiring/. Pro vás zajímavá část začíná nadpisem proměnné.
Zkuste si to přečíst a kdyžtak se ptejte

Boolean, unsigned long, int, ... to všechno jsou datové typy.
Psal jsem o nich ve článku https://arduino.cz/zakladni-struktury-jazyka-wiring/. Pro vás zajímavá část začíná nadpisem proměnné.
Zkuste si to přečíst a kdyžtak se ptejte

Re: Prosba o pomoc.
Dobrý den, také žádám o pomoc, asi je to hloupé, ale už asi 3 hodiny nemohu najít řešení.
když nahraji do Arduina následující kód a přes okno v seriové lince zadám například 1, program mi po seriové lince vypíše 49 a já nechápu proč, mám nastavenou decimální soustavu.... a stejně, dělalo to na mém programu,tak jsem zkopíroval i tento z nápovědy na arduino.cc a dělá to stále...
Moc děkuji.
int incomingByte = 0; // for incoming serial data
void setup() {
Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
}
void loop() {
// send data only when you receive data:
if (Serial.available() > 0) {
// read the incoming byte:
incomingByte = Serial.read();
// say what you got:
Serial.print("I received: ");
Serial.println(incomingByte, DEC);
}
}
když nahraji do Arduina následující kód a přes okno v seriové lince zadám například 1, program mi po seriové lince vypíše 49 a já nechápu proč, mám nastavenou decimální soustavu.... a stejně, dělalo to na mém programu,tak jsem zkopíroval i tento z nápovědy na arduino.cc a dělá to stále...
Moc děkuji.
int incomingByte = 0; // for incoming serial data
void setup() {
Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
}
void loop() {
// send data only when you receive data:
if (Serial.available() > 0) {
// read the incoming byte:
incomingByte = Serial.read();
// say what you got:
Serial.print("I received: ");
Serial.println(incomingByte, DEC);
}
}
Re: Prosba o pomoc.
Protože posilate znak '1' a ne hodnotu 1.
A znak '1' má v ASCII tabulce hodnotu 49
A znak '1' má v ASCII tabulce hodnotu 49

Re: Prosba o pomoc.
A mohu se jeste zeptat jak poslat hodnotu?
Děkuji
Děkuji
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 6 hostů