Действительно крона еле тянет ардуину, причем даже без МК...я просто в шоке от этого ...
Однако подключив просто крону к L7805 на выходе 5v и просадка на кроне не до 5v а до 6.8v ...но полюбому это без МК и потребителей

А так я конечно готовые проекты только отдельно МК в схему.

Freeduina2009
Подаю питание 9v от кроны через доп. разъем питания (внешний -, центр+ ) в результате на кроне просадка до 5v ,  а на пинах фридуины(+5 и gnd)  выходит 3,4-3,8v а если вставить в фридуину шилд блютуз то и того до 2v падает.
Крон две штуки оби живые ...одна вообще новая.

Вообщем непойму что за фигня так пожирает ток в пустой ардуине (без потребителей)

Если это косяк в ардуине то как починить !???

Бился тоже с подобным(другим) однострочником...скетч вырастает неимоверно из-за этих пары символов...
В идеале библиотеку надо поправить для таких экранов.

А так больше никогда однострочник не возьму ,если скетч сложный будет.

4

(4 ответов, оставленных в Технические вопросы)

Чайнику от чайника :))) так что учти опыта нету :)))
пару дней назад впервые сделал нечто подобное только на серво моторе.

Вот скетч упрощенный.
#include <Servo.h>
        Servo servol;
unsigned long previousMillis = 0;

void setup(){
  servol.attach(9); // на 9 пине серво мотор
  pinMode(13, OUTPUT);
  servol.write(94);  // команда успокоить серву (серва постоянного вращения)
}

void loop(){
  while ((millis() / 60000 < analogRead(0) / 17) || (millis() / 60000 < previousMillis + analogRead(0) / 17)) { // собственно таймер от 0мин до 60мин, если чуток подумать и
      // делить не на 60000 а эээээ-ээ..... сейчас millis() / 60000 это 1мин 2 мин 3мин ... вобщем раз в минуту появляется значение....можно сделать и реже 1час 2 час итд.
      // здесь делай опрос кнопок и действие шаговика нное количество раз если надо
digitalWrite(13,HIGH); // включается светодиод для контроля
  }
  previousMillis = millis() / 60000;
  // здесь команду на работу шаговика или сервы. раз в сутки (ну или как получится)
  servol.write(180); // это моя серва крутится против часовой 5,5 секунд (где-то 5,5оборотов)
    delay(5500);
  servol.write(94); // серва стоп
     

  while (millis() / 60000 < previousMillis + analogRead(1) / 17){ // еще один интервал 0-60мин
      //  здесь делай опрос кнопок и действие нное количество раз если надо (или ставь одну мин и не делай ничего)
      digitalWrite(13,LOW); //гасится светодиод для контроля
  }
// здесь команду на работу шаговика или сервы. раз в сутки или типа того (так для примера)

previousMillis = millis() / 60000;
  servol.write(0); // серва крутится по часовой 6,5сек
    delay(6500);
  servol.write(94); // стоп серва
}

ну и на последок analogRead(1) это переменный резистор 50ком на 1-м аналоговом пине (задает интервал)
analogRead(1 или 0) / 17  можно заменить целым числом и таймер будет фиксированным.

Вообщем разбирайся потихоньку... дело это хлопотное блин...

А по шаговикам, мне блин и самому интересно как их запускать то :))))

5

(13 ответов, оставленных в Технические вопросы)

Вот сочинил сам. Работает без нареканий. (дальше раз плюнуть уже)
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();
}

6

(13 ответов, оставленных в Технические вопросы)

А вот второй вариант(тоже на светодиоде) но с переменной.
тут проблема в том, что потенциометры зависимы друг от друга, второй потенциометр настроить не удалось(выделил черным)!!!
Вот такой я горесофтостроитель :)))
Вообщем если это не сложно направьте на путь истинный, ПОЖАЛУЙСТА! ! !

#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);       //
    }       
}

7

(13 ответов, оставленных в Технические вопросы)

Вот пример (пробный на светодиодах, в дальнейшем буду усложнять под серву). проблема в том, что цикл не повторяется из-за того что значение  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");     //
    }   
}

8

(13 ответов, оставленных в Технические вопросы)

Научился аналоговому вводу, выводу на экранчик, совместил, все работает.
НО есть проблемка:
millis()
раз запустив начинает считать время, а как  мне его остановить и начать с начала(в определенном месте), С НУЛЯ????
И возможно ли это вообще???
Пробовал millis() = 0    но что-то как-то  не вышло. Как правильно это сделать????

9

(5 ответов, оставленных в Технические вопросы)

Если кому интересно то проблема была из-за антивирусника Avast. Пришлось Avast полностью снести.
мозг кипит, пол инета с подобными ошибками перечитал...
Теперь займусь делом :))))

10

(13 ответов, оставленных в Технические вопросы)

Anwi пишет:

Потом можно добавить в устройство ЖК-дисплей и несколько кнопок, сделать возможность задавать по ходу работы параметры регулировани...

"Дорос таки" до необходимости регулировки сего процесса, но программировать так и не научился.
Экран купил на тестовых скетчах работает.
Со схемой монта
жа вроде проблем не вижу, а вот совместить в голове скетчи экрана, кнопок ввода и сервы УВЫ ПОКА НЕ  В СИЛАХ :)
Вопрос такой --->чем лучше(команду) задавать интервалы времени для сервы чтоб в любой момент времени можно было вводить-менять данные.   Delay(1234...) как я понимаю уже не прокатит!???

3. Как вариант на первое время, а может и навсегда, канцелярские СКРЕПКИ!!!! Которые в виниловой изоляции (разноцветные к тому же). Очень прочные и практически бесконечно-бесплатные :)))
Я этими скрепками пригвоздил к макетке freeduino. Теперь вообще лафа стала!!!

12

(13 ответов, оставленных в Технические вопросы)

Спасибо за помощь Андрей!!!
Полез я изучать!

13

(13 ответов, оставленных в Технические вопросы)

Если программно можно, значит я не зря вчера купил эту платку :-)))
Задача такая:
С  21.00 по 10.00 через каждые 30минут поворачивать серву на 90градусов, а еще через 5минут возвращать ее обратно на 0градусов (пока так задумал).
Управление планируется вентиляцией помещения. Время в идеале должно меняться от температуры на улице.
Индикация вобщем ненужна.

Подскажи пожалуйста где еще можно накачать себе готовых проектов? ? ?  Ибо по ним учится языку еще буду :-)))

14

(13 ответов, оставленных в Технические вопросы)

Сам себе отвечу :)))
Где то  прочел нужно лепить отдельно микруху-часы. Видимо программно все же нельзя реализовать.
Но всеравно наверно куплю, а там погляжу!

15

(13 ответов, оставленных в Технические вопросы)

Можно ли запрограммировать freeduino так, что бы внутри шло РЕАЛЬНОЕ ВРЕМЯ и выходы срабатывали в нужное время, на определенное уже короткое время
Ну типо чтоб таймер был такой с привязкой по времени!? ? ?