Прошу помощи.
- Войдите на сайт для отправки комментариев
Сб, 01/10/2016 - 23:28
Доброго времени суток, в програмировании я 0 поэтому прошу помощи у знатоков. Задача давольно простая:
1. На ардуино подаётся питание и начинается отщёт времени это будет 10 минут
2. Спустя 10 минут на электроды (их 4 штуки) подключеные к 3.3 вольтам и 13 пину например, должен подоватся слабый ток с частотой 40 герц продолжительностью 5 минут
3. и так по кругу.
Быть может кто-нибудь скинет скетч годный? Очень прошу!
#define OUT_PIN 13 #define OFF_MS 10 * 60 * 1000L #define ON_MS 5 * 60 * 1000L #define HZ 40 #define T_US 1000000L / HZ void setup() { digitalWrite(OUT_PIN, HIGH); pinMode(OUT_PIN, OUTPUT); } void loop() { delay(OFF_MS); for (uint32_t i = 0; i < ON_MS * 1000 / T_US * 2; i++) { delayMicroseconds(T_US / 2); digitalWrite(OUT_PIN, !digitalRead(OUT_PIN)); } }htpicc@gmail.com
Надеюсь всё будет на "честном Си"?))
странно светодиод постоянно горит не выключаясь
странно светодиод постоянно горит не выключаясь
зато бесплатно.
А можно бесплатно и чтоб работало? =)
А можно бесплатно и чтоб работало? =)
В другой форум.
да вы тут сговорились)))
странно светодиод постоянно горит не выключаясь
Дествительно странно, ведь лампочка на 50 герцах не постоянно горит. :)
Вы пчела, что бы увидеть мерцание 40 гц?
;))
да вы тут сговорились)))
Ни тебе спасибо, ни тебе чего... От народ! Быдло.
да вы тут сговорились)))
Онкель бесплатно делает, дарит бескостыльное оборудование и три фонтана в придачу.
RAMBOTRON
unsigned long ts_duty,ts_idle; // timestamp bool ena_duty=0; // flag void setup(){ ts_idle=millis(); DDRB|=B00100000; // D13 } void loop(){ if(!ena_duty && millis()-ts_idle>=600000){ // 10 min ts_idle=millis(); ts_duty=micros(); ena_duty=1; } if(ena_duty && millis()-ts_idle>=300000){ // 5 min ts_idle=millis(); ena_duty=0; } if(ena_duty){ if(micros()-ts_duty>=25000){ // 40 hz PORTB^=B00100000; ts_duty=micros(); } }else PORTB&=B11011111; // off }500 денег достаточно, ЯД 410011919696337.
RAMBOTRON
unsigned long ts_duty,ts_idle; // timestamp bool ena_duty=0; // flag void setup(){ ts_idle=millis(); DDRB|=B00100000; // D13 } void loop(){ if(!ena_duty && millis()-ts_idle>=600000){ // 10 min ts_idle=millis(); ts_duty=micros(); ena_duty=1; } if(ena_duty && millis()-ts_idle>=300000){ // 5 min ts_idle=millis(); ena_duty=0; } if(ena_duty){ if(micros()-ts_duty>=25000){ // 40 hz PORTB^=B00100000; ts_duty=micros(); } }else PORTB&=B11011111; // off }500 денег достаточно, ЯД 410011919696337.
где-то в Усть-Зажопинске пересох фонтан.
RAMBOTRON
unsigned long ts_duty,ts_idle; // timestamp bool ena_duty=0; // flag void setup(){ ts_idle=millis(); DDRB|=B00100000; // D13 } void loop(){ if(!ena_duty && millis()-ts_idle>=600000){ // 10 min ts_idle=millis(); ts_duty=micros(); ena_duty=1; } if(ena_duty && millis()-ts_idle>=300000){ // 5 min ts_idle=millis(); ena_duty=0; } if(ena_duty){ if(micros()-ts_duty>=25000){ // 40 hz PORTB^=B00100000; ts_duty=micros(); } }else PORTB&=B11011111; // off }500 денег достаточно, ЯД 410011919696337.
Это же нихрена ни разу не чистый си !!! Как можно !? А онкель знает !? Кошмар !!!!
Аще индифферентно, nigger's problems don't fuck sheriff. Афтар знал куда зашёл, реализация есть? - есть. Оплата теперь на его совести.
Всем большое спасибо, Voodoo Doll от души! За мной не заржавеет. Только вот на 13 пине те 10 минут
if(!ena_duty && millis()-ts_idle>=600000){// 10 min11ts_idle=millis();12ts_duty=micros();13ena_duty=1;есть напряжение, а его быть не должно. Тоесть только стробоскоп 5 минут 40 герц а потом тишина 10 мин а потом сново строб и т.д
Инверсная логика чтоли? Тогда в строке 24 поменять PORTB&=B11011111 на PORTB|=B00100000
немного шутим над ТС :-)?
может кто-нибудь скинет скетч годный?
почитай, разберешся.
http://arduino.ru/Reference/Delay
http://arduino.ru/Reference/Tone