Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
sõnum |
|
new1
HV kasutaja
liitunud: 02.06.2007
|
01.04.2017 13:32:28
|
|
|
Tere, ütlen kohe ära, et koodikirjutamisest ei tea suurt midagi, ent ühe projekti jaoks oleks vaja üht funktsiooni arduinolt saada. Nimelt PWM juhtimine kahe pushbutton tüüpi nupu abil. Googlest leidsin kunagi mingisuguse koodijupi(algselt mingi LED-i timmimine oli, natuke sättisin seal, et PWM astmed ühekaupa saaks jms), kus üks nupp hakkab PWM-i kasvatama kuni maksimumini välja ja teine kahandab siis vastavalt. Muidu kõik iseenesest toimib, aga täpset ja kiiret reguleerimist samaaegselt ei saa teha. Nimelt nupp reageerib kohe kui vajutada üksteise otsa 256ks jagatud PWM-i vähendamise/suurendamisega. Hetkel on siis nii, et kui tahan PWM-i täpselt iga 256 sammu kaupa eraldi juhtima, siis pean selle delay 100ms kanti jätma, ent kui tahan sellisel juhul peale sisselülitust kiirelt näiteks 70% PWM-ini jõuda, siis see ei õnnestu, pean nuppu pikalt all hoidma ja ootama. Kui delay näiteks 10ms panen, siis läheb küll kiirelt ja ludinal üles, ent täpselt ei saa reguleerida, kuna nupuvajutuse aja sisse jääb palju PWM-i astmeid. Ideaalne variant oleks selline, kus nuppu vajutades kõigepealt liigutaks ühe astme võrra üles/alla PWM-i ja rohkem mitte. Kui nüüd nuppu all hoida, siis näiteks 1000ms pärast hakkaks kiirelt üles/allapoole kerima PWM-i. Nõnda oleks kiirus ja täpsus saavutatavad. Lisan olemasoleva koodijupi jutu lõppu, et ehk keegi oskab täiendada seda koodi veidi sobivaks. Teine variant oleks viidata sobivale valmiskoodijupile kusagil, ise otsisin, aga paraku ei jäänud sobivat silma.
/*
The circuit:
* pushbutton attached to pin 7 & 9 from 5V
* 10K resistor attached to GND
* LED attached from PWM Pin 8 to ground (or use the built-in LED on
most Arduino boards)
created 20 Feb 2014
by Syed Nasir
This example code is in the public domain.
*/
// constants won't change. They're used here to
// set pin numbers:
const int posButton = 9; // + button pin 9
const int negButton = 8; // + button pin 9
const int ledPin = 6; // LED pin connected to pin 8
// variable for LED brightness
int brightness;
// variables will change:
int posButtonState = 0; // variable for reading the pushbutton status
int negButtonState = 0; // variable for reading the pushbutton status
void setup() {
// put your setup code here, to run once:
Serial.begin (9600);
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(posButton, INPUT);
pinMode(negButton, INPUT);
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
} // end of setup
void loop() {
// put your main code here, to run repeatedly:
// read the state of the pushbutton value:
posButtonState = digitalRead(posButton);
negButtonState = digitalRead(negButton);
// only one button pressed at a time
if (posButtonState == HIGH && negButtonState == LOW)
{
if (brightness <= 254)
{
brightness = brightness +=1;
}
else
{
brightness = 255;
}
// led lights up
analogWrite(ledPin, brightness);
Serial.print (brightness);
Serial.println ();
}
if (negButtonState == HIGH && posButtonState == LOW)
{
if (brightness >= 1)
{
brightness = brightness -=1;
}
else
{
brightness = 0;
}
// led lights up
analogWrite(ledPin, brightness);
Serial.print (brightness);
Serial.println ();
}
delay (100);
} // end of loop
|
|
tagasi üles |
|
|
iceincube
HV veteran
liitunud: 18.11.2005
|
05.04.2017 14:52:21
|
|
|
said tehtud?
Vihjeks on siin millis();
Nupu vajutamise hetkel salvestad mällu ajalise väärtuse.
Nupu vajutuse dedectimiseks pead nupu eelmise tüskli väärtust võrdlema hetke väärtusega : https://www.arduino.cc/en/Tutorial/StateChangeDetection
Siis iga tüskliga kontrolid palju aega mõõdunud on. Vastavalt mõõdunud ajale saab ka liita ja lahutada PWM väärtust.
|
|
tagasi üles |
|
|
new1
HV kasutaja
liitunud: 02.06.2007
|
06.04.2017 23:05:34
|
|
|
Ei ole tehtud, hetkel asi toimib sellesama koodi järgi. Või ehk viitsid ise selle rea/read sobiva koha peale lisada kui puusalt ära paneksid selle
|
|
tagasi üles |
|
|
Germo7
HV vaatleja
liitunud: 28.05.2003
|
09.04.2017 23:11:00
|
|
|
Hej:)
Kas keegi on Blynk-is saanud gsm800/900 modemiga mõne sketsi üle gprs-i tööle?
Või oskab nõu anda kus Eestis Arduino parim foorum vms on ?
Tänx
_________________ Samsung Galaxy Spica, S2, S4, S5, S6 Edge, S8 |
|
tagasi üles |
|
|
KillFrenzy
HV Guru
liitunud: 05.04.2003
|
30.05.2017 17:30:05
|
|
|
Vaja kordamööda lülitada 2 LED'i.
Kasutasin sellist koodi, kõik toimib, aga kas nii pikk delay näiteks 5 tunni peale on täpne või on see millegi muu pärast halb mõte?
void loop() {
digitalWrite(12, HIGH); // roheline tuli sisse
delay(60000); // aeg millisekundites
digitalWrite(12, LOW); // roheline tuli välja
digitalWrite(11, HIGH); // punane tuli sisse
delay(240000); // aeg millisekundites
digitalWrite(11, LOW); // punane tuli välja
} |
_________________ M: SFP Telia GPON võrgu jaoks - 40€ |
|
tagasi üles |
|
|
mikk36
HV Guru
liitunud: 21.02.2004
|
30.05.2017 18:05:18
|
|
|
Kui täpselt sul viit tundi vaja tabada on?
|
|
tagasi üles |
|
|
KillFrenzy
HV Guru
liitunud: 05.04.2003
|
30.05.2017 18:09:44
|
|
|
Mitte väga, kui see 5 tunni pärast 5 sek nihkes oleks, see oleks suva.
Et siis 5 tundi järjest, põleb minut roheline ja 4 minutit punane. Mitte ei taha delayt 5 tunni peale panna.
_________________ M: SFP Telia GPON võrgu jaoks - 40€ |
|
tagasi üles |
|
|
olafsand
HV Guru
liitunud: 07.09.2007
|
31.05.2017 12:21:15
|
|
|
Küsimus küll RPI kohta, aga äkki keegi siit oskab aidata. Lühidalt olukord selline. Terminalis lasen käima sudo python dallas.py ja see hakkab siis temp anduritelt infi saama ja 5 minutilise intervalliga netti saatma. Kui nüüd wifi ikaldub näiteks korraks, siis ongi timeout ja pean selle käsu uuesti käima laskma käsitsi. Samuti peab olema terminali aken avatud alati. Kui peale käsu käima laskmist terminali akna nurgast sulgen, siis ei saadeta ka infot enam järgneva viie minuti pärast. Kuidas nii teha, et Pi näiteks iga 60 minuti tagant teeks igal juhul restardi ja käima minnes avaks ise terminali ka käivitaks selle käsu ka?
Teine variant võib ka nii olla, et Pi ei tee restarti, aga see terminali aken koos käsu uuesti käima ajamisega tehtaks automaatselt iga tunni tagant.
|
|
tagasi üles |
|
|
Etz
HV Guru
liitunud: 27.01.2005
|
31.05.2017 13:25:27
|
|
|
olafsand, lase script screenis käima ja siis detachi ning sulge aken...
Üldiselt võid ka selle kõik cron'i toppida, mingi lihtsa skriptijupiga, mis eelmise instantsi olemasolu checkiks, selle vajadusel sulgeks ja uue käima tõmbaks.
_________________ ...life is random...so am I...
So, there is a fan. Time to grab your sh*t, gentlemen! |
|
tagasi üles |
|
|
olafsand
HV Guru
liitunud: 07.09.2007
|
31.05.2017 19:07:56
|
|
|
Etz, aitäh! Ma aiman mida mõtled ja kuidas see olla võiks, aga teostuseks on mul oskused nullis.
|
|
tagasi üles |
|
|
andresv
HV kasutaja
liitunud: 06.12.2004
|
01.06.2017 16:48:12
|
|
|
nohup käsk/programm on sellisteks otstrarbeteks mõeldud
>nohup python ./skript.py
Ja mis puudutab viit tundi ja arduinot, siis võiks olla piisavalt täpne.
Ma panin 4 arduiont ledribasid vilgutama delaydega. ning 12 tunniga ei olnud veel märgata et need oleks süngist välja läinud.
Aga need tõmmatakse iga õhta seinast välja, seega mitme päeva kogemus puudub.
|
|
tagasi üles |
|
|
riaak
HV Guru
liitunud: 22.09.2002
|
02.06.2017 11:36:08
|
|
|
Kui oskad, siis tee skript ümber, et saadab ainult korra andmed ja siis lõpetab töö.
Ja pane crontab-iga iga 5 min tagant jooksma.
Mul jooksevad skriptid nt nii:
*/5 * * * * cd /home/ubuntu && /usr/bin/python skript.py
_________________ ¯\_(ツ)_/¯ |
|
tagasi üles |
|
|
olafsand
HV Guru
liitunud: 07.09.2007
|
02.06.2017 11:55:56
|
|
|
riaak, ei oska kui aus olla
Kas nii ei oleks võimalik, et mingi remote desktopi panen PI peal käima ja sa võtad asja üle ja teed selle paranduse skripti?
|
|
tagasi üles |
|
|
Etz
HV Guru
liitunud: 27.01.2005
|
02.06.2017 14:55:03
|
|
|
olafsand, pane script kuskile pastebin'i ja link viska siia, küll keegi ära parandab.
_________________ ...life is random...so am I...
So, there is a fan. Time to grab your sh*t, gentlemen! |
|
tagasi üles |
|
|
riaak
HV Guru
liitunud: 22.09.2002
|
02.06.2017 15:18:34
|
|
|
olafsand, pigem mitte, niigi palju tööd teha.
Pane jah pigem avalikult üles ja keegi ehk aitab
_________________ ¯\_(ツ)_/¯ |
|
tagasi üles |
|
|
olafsand
HV Guru
liitunud: 07.09.2007
|
02.06.2017 16:15:04
|
|
|
Suured tänud Teile! Panen selle pühapäeval siis siia üles
|
|
tagasi üles |
|
|
antsus1000
HV kasutaja
liitunud: 29.10.2010
|
|
tagasi üles |
|
|
maxfox04
HV veteran
liitunud: 08.02.2010
|
08.02.2018 22:19:43
|
|
|
Millelegi pärast mulle tundub, et Arduino siin üleliigne. Need 2 asja peaks saama omavahel otse ühendada.
_________________ Hobielektroonik. Parandan katki läinud elektroonikat.
Huvid: mikrokontrollerid, DIY, IoT, CNC, 3D printer: Prusa i3. |
|
tagasi üles |
|
|
antsus1000
HV kasutaja
liitunud: 29.10.2010
|
08.02.2018 22:33:54
|
|
|
maxfox04 kirjutas: |
Millelegi pärast mulle tundub, et Arduino siin üleliigne. Need 2 asja peaks saama omavahel otse ühendada. |
Tänud. Teil oli õigus. Sain asja toimima.
|
|
tagasi üles |
|
|
olafsand
HV Guru
liitunud: 07.09.2007
|
28.02.2018 10:47:30
|
|
|
Võtan korra vana teema üles.
Eile uurisin siis seda crontab asja.
Mul on dallas.py fail mida vaja käitaga. Ka siis kui näiteks restardi teen vaarikale, et siis see läheks ise käima uuesti (dallas.py mõtlen)
Vaarikasse sisselogimine on user:pi ja siis parool. Siis edasi on terminalis cd /home
home kaustas käsk sudo python dallas.py ja vajalik asi hakkab tööle
terminalis crontab -e ja seal peaks lisama viimase rea? Olen sinna sättinud igatepidi, aga käima asi ei hakka. Lähenen valest kohast crontab`ile?
|
|
tagasi üles |
|
|
riaak
HV Guru
liitunud: 22.09.2002
|
01.03.2018 01:00:21
|
|
|
Kui sul on vaja, et see skript rootina jookseks, siis:
sudo crontab -e
Lõppu lisa:
@reboot cd /home/ && /usr/bin/python dallas.py
Python võib sul mujal asuda, kui /usr/bin/python . Õiget asukohta näed, kui trükid: which python
_________________ ¯\_(ツ)_/¯ |
|
tagasi üles |
|
|
olafsand
HV Guru
liitunud: 07.09.2007
|
01.03.2018 10:59:44
|
|
|
riaak, aitäh, proovin õhtul. Eile proovisin ka, aga tekkis olukord, et ei osanud seda viimast rida kuidagi ära salvestada crontabi. Lähenen Pi`le läbi Putty programmi. Mis klahvikombinatsiooniga ma salvestada saan seda?
|
|
tagasi üles |
|
|
riaak
HV Guru
liitunud: 22.09.2002
|
01.03.2018 17:16:46
|
|
|
Sõltub editorist. Nano puhul ctrl+o ning seejärel enter salvestab, ctrl+x väljub
_________________ ¯\_(ツ)_/¯ |
|
tagasi üles |
|
|
olafsand
HV Guru
liitunud: 07.09.2007
|
01.03.2018 19:46:03
|
|
|
riaak, sain savestatud, aga kasu sellest reast pole kahjuks. Peale rebooti igatahes dallas.py käima ei tõmmata
|
|
tagasi üles |
|
|
Chaza!
Kreisi kasutaja
liitunud: 18.07.2006
|
02.03.2018 11:30:09
|
|
|
Siis peaks saama asja tööle /etc/rc.local faili lisades rea python /home/dallas.py
Kindel, et sul skript ei asu: /home/pi/dallas.py ?
_________________ Linux - Future
"Those Who Sacrifice Liberty For Security Deserve Neither." - Benjamin Franklin
1984 was not supposed to be instruction manual |
|
tagasi üles |
|
|
|