Тема: Подскажите по freeduino.
Можно ли запрограммировать freeduino так, что бы внутри шло РЕАЛЬНОЕ ВРЕМЯ и выходы срабатывали в нужное время, на определенное уже короткое время
Ну типо чтоб таймер был такой с привязкой по времени!? ? ?
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форум freeduino.ru → Технические вопросы → Подскажите по freeduino.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Можно ли запрограммировать freeduino так, что бы внутри шло РЕАЛЬНОЕ ВРЕМЯ и выходы срабатывали в нужное время, на определенное уже короткое время
Ну типо чтоб таймер был такой с привязкой по времени!? ? ?
Сам себе отвечу :)))
Где то прочел нужно лепить отдельно микруху-часы. Видимо программно все же нельзя реализовать.
Но всеравно наверно куплю, а там погляжу!
Конкретизируйте задачу. Внутри микроконтроллера тикает таймер, зависимый от тактовой частоты. Соответственно из него можно вычислить секунды, минуты и т.д. Т.е. чисто программно можно написать часы. Можно применять и отдельные микросхемы. Все зависит от поставленной задачи.
Примеры реализации часов и чисто программных, и с использованием специализированной микросхемы можете посмотреть на моей страничке: http://sites.google.com/a/project-ss.ru … led-shield
Вывод осуществляется на семисегментный индикатор.
Если программно можно, значит я не зря вчера купил эту платку :-)))
Задача такая:
С 21.00 по 10.00 через каждые 30минут поворачивать серву на 90градусов, а еще через 5минут возвращать ее обратно на 0градусов (пока так задумал).
Управление планируется вентиляцией помещения. Время в идеале должно меняться от температуры на улице.
Индикация вобщем ненужна.
Подскажи пожалуйста где еще можно накачать себе готовых проектов? ? ? Ибо по ним учится языку еще буду :-)))
Если программно можно, значит я не зря вчера купил эту платку :-)))
Задача такая:
С 21.00 по 10.00 через каждые 30минут поворачивать серву на 90градусов, а еще через 5минут возвращать ее обратно на 0градусов (пока так задумал).
Управление планируется вентиляцией помещения. Время в идеале должно меняться от температуры на улице.
Индикация вобщем ненужна.Подскажи пожалуйста где еще можно накачать себе готовых проектов? ? ? Ибо по ним учится языку еще буду :-)))
А не проще ли подключить к Freeduino пару датчиков температуры, вывести один наружу, второй в помещение и управлять заслонкой в зависимости от температуры?
Потом можно добавить в устройство ЖК-дисплей и несколько кнопок, сделать возможность задавать по ходу работы параметры регулирования...
Полезные ссылки:
http://rln.nnov.ru/index.php?pid=13/
http://habrahabr.ru/blogs/arduino/
http://www.robocraft.ru/blog/arduino/
http://www.arduino.cc/playground/
Спасибо за помощь Андрей!!!
Полез я изучать!
Потом можно добавить в устройство ЖК-дисплей и несколько кнопок, сделать возможность задавать по ходу работы параметры регулировани...
"Дорос таки" до необходимости регулировки сего процесса, но программировать так и не научился.
Экран купил на тестовых скетчах работает.
Со схемой монта
жа вроде проблем не вижу, а вот совместить в голове скетчи экрана, кнопок ввода и сервы УВЫ ПОКА НЕ В СИЛАХ :)
Вопрос такой --->чем лучше(команду) задавать интервалы времени для сервы чтоб в любой момент времени можно было вводить-менять данные. Delay(1234...) как я понимаю уже не прокатит!???
Со схемой монтажа вроде проблем не вижу, а вот совместить в голове скетчи экрана, кнопок ввода и сервы УВЫ ПОКА НЕ В СИЛАХ :)
Вопрос такой --->чем лучше(команду) задавать интервалы времени для сервы чтоб в любой момент времени можно было вводить-менять данные. Delay(1234...) как я понимаю уже не прокатит!???
Для начала продумайте алгоритм будущей программы. Обычно в начале идет инициализация и установка исходных значений, а затем основной бесконечный цикл.
В цикле Вам надо реализовать опрос кнопок, вывод на дисплей, управление сервой и т.д.
Я бы оформил эти задачи в виде функций, а в основном цикле останется только перебрать получившиеся функции. При этом очень удобно отладить сначала каждую функцию отдельно.
Delay для относительно больших пауз не прокатит. Задержки можно вычислять при помощи millis.
В качестве примера можете посмотреть программу часов на моей страничке http://sites.google.com/a/project-ss.ru … led-shield
установи gps приёмник.... и корректируй относительно UTС зная координаты.... и всё......
а чтоб получить время с приёмника достаточно чтоб он поймал хотябы ОДИН спутник.... и никакого гемора....
Подскажите пожалуйста программу, которая бы увезала часы реального времени собраные на DS 1307 с freeduino, и так же, чтобы подавались команды на управлениями нескольлими нагрузками с freeduino. Например от 3 до 6 каналов управления в разное время суток.
Научился аналоговому вводу, выводу на экранчик, совместил, все работает.
НО есть проблемка:
millis()
раз запустив начинает считать время, а как мне его остановить и начать с начала(в определенном месте), С НУЛЯ????
И возможно ли это вообще???
Пробовал millis() = 0 но что-то как-то не вышло. Как правильно это сделать????
Вот пример (пробный на светодиодах, в дальнейшем буду усложнять под серву). проблема в том, что цикл не повторяется из-за того что значение millis() уходит дальше моих пределов.
Потенцеометр №0 задает время(0-60) до момента включения светодиода
Потенцеометр №1 задает время (0-60) до отключения светодиода
все это работает только один раз.
Подскажите пожалуйста как тут быть? ? ?
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 2, 3, 4, 5) ;
int ledPin13 = 13;
int value = LOW; //
int sensorPin = 0; //
int sensorPin1 = 1; //
void setup() {
lcd.begin(16, 2);
}
void loop() {
if (millis() / 1000 > analogRead(sensorPin) / 17) {
if (value == LOW)
value = HIGH;
digitalWrite(ledPin13, value);
}
if (millis() / 1000 > analogRead(sensorPin) / 17 + analogRead(sensorPin1) / 17 ) {
if (value == HIGH)
value = LOW;
digitalWrite(ledPin13, value);
}
lcd.setCursor(0, 0); //
lcd.print(analogRead(sensorPin) / 17); //
lcd.print(" sec OPEN "); //
lcd.setCursor(0, 1); //
lcd.print(analogRead(sensorPin1) / 17); //
lcd.print(" sec CLOSED"); //
}
}
А вот второй вариант(тоже на светодиоде) но с переменной.
тут проблема в том, что потенциометры зависимы друг от друга, второй потенциометр настроить не удалось(выделил черным)!!!
Вот такой я горесофтостроитель :)))
Вообщем если это не сложно направьте на путь истинный, ПОЖАЛУЙСТА! ! !
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 2, 3, 4, 5) ;
int ledPin = 13;
int value = LOW; //
int sensor0 = 0; //
int sensor1 = 1; //
long previousMillis = 0;
long previousMillis1 = 0;
long interval0 = 1000;
long interval1 = 1000;
void setup() {
lcd.begin(16, 2);
pinMode(ledPin, OUTPUT);
}
void loop() {
interval0 = analogRead(sensor0) * 10;
interval1 = analogRead(sensor1) * 10;
if (millis() - previousMillis >= interval0) {
previousMillis = millis();
if (value == LOW)
value = HIGH;
// else
// value = LOW;
digitalWrite(ledPin, value);
}
if (millis() >= previousMillis + interval1) {
previousMillis1 = previousMillis + interval1;
if (value == HIGH)
value = LOW;
// else
// value = HIGH;
digitalWrite(ledPin, value);
}
lcd.setCursor(0, 0); //
lcd.print(previousMillis); //
lcd.setCursor(0, 1); //
lcd.print(previousMillis1); //
}
}
Вот сочинил сам. Работает без нареканий. (дальше раз плюнуть уже)
int ledPin = 13;
int sens0 = 0;
int sens1 = 1;
long previousMillis = 0;
void setup(){
pinMode(ledPin, OUTPUT);
}
void loop(){
while ((millis() < analogRead(sens0)) || (millis() < previousMillis + analogRead(sens0))) {
digitalWrite(ledPin,HIGH);
}
previousMillis = millis();
while (millis() < previousMillis + analogRead(sens1)){
digitalWrite(ledPin,LOW);
}
previousMillis = millis();
}
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форум freeduino.ru → Технические вопросы → Подскажите по freeduino.
Форум работает на PunBB, при поддержке Informer Technologies, Inc