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

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

Функция pow. Некорректное число

Здравствуйте, написал простейший код:

void loop()
{
  if (Serial.available() > 0)
  {
    data = Serial.parseInt();
    if (data != 0)
    {
      data = data - 1;
      result = pow(2,data);    
      digitalWrite(LATH, LOW);
      shiftOut(SER, CLK, MSBFIRST, result);
      Serial.println(result);
      digitalWrite(LATH, HIGH);        
    }
        
  }

}

Почему-то на выводе у меня число в степени двойки и минус один, т.е ввожу 5, должен вывести 32, а по факту 31. Что я делаю не так?

Дисплей 1202 вывод переменной.

#include <PCF8814.h> 

PCF8814 Lcd(13,11,10,6); // LCD pin: 5 clk, 4 sda, 2 cs, 1 reset.
int sensorPin = A0;
int sensorValue = 0;
void setup() { 
  sensorValue = analogRead(sensorPin);
  Lcd.Init();
  Lcd.GotoXY(6,2);
  Lcd.Print("Привет");
  Lcd.GotoXY(4,4);
  Lcd.PrintWide("WORLD");

}

void loop() {
}

Использую библиотеку PCF8814 и с помощъю нее вывожу данные на дисплей nokia 1202/

Уже научился выводить текст, рисовать круги, квадраты и вставлять картинки.

Сохранение настроек. Когда?

Собственно вопрос в заголовке.

Грубо говоря есть 50 параметров. 40 из них настраиваются в отдельном пункте меню и сохраняются по отдельному запросу из того же меню. Но есть еще 10 параметров которые туда не входят. Т.е. - эти параметры изменяются пользователем отдельно с кнопок, либо же изменяются самой программой.

Сохряняю сейчас примерное так:

Дисплей 1602 слетает на каракули...

Мужики, прошу поделиться опытом в этой штуковине... Купил дисплейчик стандартненький и подключил его как тут http://zelectro.cc/LCD1602_and_LM35  Прописал ему код - все работает... Значения температуры отображаются, изменяются - вообщем все шикарно... Тут проходит троечк часов - на дисплее каракули одни... Перезагружаю дуинку и снова примерно троечку часов работает, а затем каракули... Питаю дисплей от отдельного источника стабилизированного, от которого питается и сама дуинка...

БОльший размер hex файла, чем пишет Arduino IDE

Добрый день! Подскажите пожалуйста почему при компиляции например примера с LCD 16*2 Autoscroll компилятор пишет :

Sketch uses 2 368 bytes (33%) of program storage space. Maximum is 7 168 bytes.
Global variables use 41 bytes of dynamic memory.
 
При этом размер hex файла:
Autoscroll.cpp.standard.hex 6686 байт.
 
Я пользуюсь "Export compiled binary" функцией в Arduino IDE.
 
Использую ATMega8

Передача переменной через Serial

Подскажите пожалуйста код для приемника и передатчика данных по Rx Tx. Uno должна снимать данные с потенциометра и передавать их по RX Tx на nano.

на приемнике пробовал такой код, но он выдает ерунду( 

Передачтик на 433mHz с постоянной отправкой команды ( огромный расход )...

Всем привет. Пишу здесь в надежде на то,что кто-то сможет помочь (посоветовать), что поправить или может быть вообще изменить скетч....

Что не так с кодом кнопок?



Друг распаял для меня плату кухонной вытяжки.
У нее 4 кнопки.
Необходимо чтобы d2 просто включало выключало свет через реле 2
 
А вот кнопки d3 и d4 рулят первым реле - включая его на 30 минут и час.
Код компилируется но увы ничего не происходит

#include <Arduino.h>
//для удобства обзываем выводы
#define rel1 11 //вывод на реле вытяжки
#define rel2 12 //вывод на реле света

void setup()
{

Умножение частоты импульсов в 2.6 раза

Возникла задача, применение автомобильное. Есть датчик скорости, есть блок управления от более свежей акпп, подробнее тут: http://www.drive2.ru/l/7396416/ . Необходимо увеличение частоты входных импульсов в 2.6 раза. Сигнал естественно меандр. Мысль выдала вот такой скетч:
 
long time=0;
void setup() {
}

void loop() {
 
  time=pulseIn(A2, HIGH,35000);
 
      if(time==0||time>30000) 
      {
            noTone(13);
      }
      

was not declared in this scope

Помогите, пожалуйста, уже готов разбить комп в бессилии. Я хочу сделать счетчик.
Т.е. смысл таков. Я к байту 2 прибавляю 250 (FBh) и OLD_BYTE2 держит значение, которое было перед тем, как было прибавлено 250.
Если после прибавления 250 значение стало меньше чем OLD_BYTE2, т.е. произошел переход и значение стало, например, 244 (250 + 250 = 1244), то мне в BYTE1 надо прибавить единицу, чтобы стало как бы 1244, а не 0244, птому что первое значение естественно теряется в 8 битах. 

int OLD_BYTE2 = BYTE2;
 BYTE2 = BYTE2 + 250;
 if (OLD_BYTE2 > BYTE2)