Программирование

Вопросы по программированию Arduino.

Генератор импульсов от скорости или метража считать?

привествую снова, ардуинцы)))

туплю чего то, значит с задачей разгона ЖПС справился, помогите теперь другой лопатой, как выдавать импульсы в зависимости от скорости или пути?

допусти у нас приборка использует 6импульсный датчик скорости, то есть, на один оборот колеса метраж составляет 2.635 метра, то есть 0,44 метра (а если взять 8 импульсный, то еще чаще 0,33) что гораздо меньше погрешности жпс измерений

так вот как реализовать логику?

брать скорость в метрах со спутников * умножать на отрезок времени (новое время - старое время) = расстояние

скетч для покупного ик пульта


/*
ИК датчик подключен на D2, т.к. на него прерывание 0 
*/
byte n = 0;
word keycode = 0;
unsigned long tm = 0;
unsigned long last;
char ch = ' ';

void setup()
{
  pinMode(2, INPUT); // ir recv

  Serial.begin(115000);
  attachInterrupt(0, irread, FALLING);
}


void keypressed();
{
  n = 0;

    switch (keycode)
    {
      case 0x1FE:
        ch = '1';
        break;
      case 0xFE:
        ch = '2';
        break;
      case 0x817E:
        ch = '3';
        break;
      case 0x41BE:

Нужна помощь

Хотел поставить датчик движения и подцепить пьезоизлучатель. Идея такова, когда датчик движения определил что - то, то пьезоизлучатель издает какой нибудь звук. (ну и светодиод так для общей картины поставить).

Имеется такой код: 

Помогите избавиться от delay()

Вопрос собственно вот в чем. Вот кусок самодельной функции

if (n == 5)
	{
		digitalWrite(oneLamp, HIGH);
		delay(1000);
		digitalWrite(twoLamps, HIGH);
		oneLampStat = 1;
		twoLampsStat = 1;
		threeLampsStat = 1;
		delay(1000);
	}

Не получается это всё заменить на пример с previousMillis. Если сделать так, реле включаются одновременно

как сделать чтобы программа продолжалась только после нажатия кнопки

Есть 2 кнопки. Как написать код, чтобы программа ждала пока не нажата кнопка 1 или 2. Если нажать кнопку 1 выполняется одно действие , если нажата кнопка 2 - другое, если нажаты одновременно кнопка 1 и 2 -третье действие, а если вообще не нажаты кнопки то нужно ждать пока не будут нажаты кнопки

не могу написать просто через условие if... else.

Помогите разобраться (Матричная клавиатура 3*3 и меню)

Товарищи, помогите разобраться. Пытаюсь организовать простое меню на ардуино с использованием матричной клавиатуры(3*3). При нажатии на 4 и 6 должны листаться пункты меню, вперед и назад, соответственно. А при нажатии на 2 и 8 изменяться значения переменных. Суть проблемы: при нажатии на 4 и 6 листается только вперед, при всем этом 5-ка тоже пролистывает, а 2 и 8 вообще не отрабатывают. Подскажите, пожалуйста, как быть?

 

ПОМОГИТЕ ПОСТАВИТЬ ТОЧКИ НАД И

[quote=Umka]

Добрый день. С умным брудером получилось, пришло время заняться инкубатором.

Задача - сделать простое по материалам и стоимости, но надежное и точное устройство для маленьких и средних бытовых инкубаторов. Для замены примитивных аналоговых терморегуляторов в корпусах то мыльниц и розеток. Получилось не совсем дешево, но компактно и функционально. 

Что мы имеем:

Термометр - народный DS18B20, с залитыми эпоксидным клеем контактами.

Влагомер и доп. термометр - SHT10.

Arduino ProMini в качестве мозга.

LCD 20х4 с I2C контроллером.

ПОМОГИТЕ ПОСТАВИТЬ ТОЧКИ НАД И

[quote=Umka]

Добрый день. С умным брудером получилось, пришло время заняться инкубатором.

Задача - сделать простое по материалам и стоимости, но надежное и точное устройство для маленьких и средних бытовых инкубаторов. Для замены примитивных аналоговых терморегуляторов в корпусах то мыльниц и розеток. Получилось не совсем дешево, но компактно и функционально. 

Что мы имеем:

Термометр - народный DS18B20, с залитыми эпоксидным клеем контактами.

Влагомер и доп. термометр - SHT10.

Arduino ProMini в качестве мозга.

LCD 20х4 с I2C контроллером.

Serial.read() и delay

Проблему описать затруднительно, поэтому сразу приведу пример

....
i = Serial.read();
if(i == 1){
  Serial.println(1);
  delay(10000);
}
....

Собственно в чем проблема - если я отправлю 1, то выведет 1, и уйдет в sleep на 10 секунд.

Если я в течении этих 10 секунд еще раз отправлю 1, то через оставшееся время он опять выведт 1 и уйдет на 10 секунд.

Есть ли возможноть как нибудь с этим бороться? Например на это время отключать считывание символов?

arduino, servo, joystick

Здравствуйте форумчане, помогите пожалуйста с кодом. Что имеем, два серво двигателя, джойстик, ардуино Nano.

При изменение положения джойстика, изменяем уголол серво, если мы отпускаем джойстик, он возврачается в первоночальное положение и серво тоже, а хотелось бы, что бы серва не возвращалась, а в исходное положение серво можно было бы вернуть движением джойстика в обратную сторону