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

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

Остановка действия в void loop

Приветствую всех.

как компилировать файлы в терминале линукса, если их несколько?

Один если файл, то я компилирую

avr-gcc -mmcu=микроконтроллер -Os файл.c файл.o

avr-objcopy -j .text -j .data -O ihex файл.o  файл.hex

А если разбит проект на кучу файлов, тогда как быть? 

Как сделать чтоб ардуино запоминала всё что было до перезагрузки ардуино?....

Например на дисплее идет счетчик. Дошло до 10000мс. После перезагрузки будет 0. Какой командой или библиотека сохранить эти числа или слова

 

Nет ШИМ

Здравствуйте.
Когда включаю строки в loop ШИМ исчезает, как исправить ?
 
//http://www.stm32duino.com/viewtopic.php?f=19&t=3037&start=10
//uint8_t = 256;

//volatile uint8_t indx;
volatile int i = 0; //initializing a integer for incrementing and decrementing duty ratio.
void Tim2_ISR(void)
{
  Timer2.setCompare(TIMER_CH4, i);
}


HardwareTimer pwmtimer2(2);

void setup() {
  pinMode(PB3, INPUT_PULLDOWN);
  pinMode(PB5, INPUT_PULLDOWN);

Помогите с запуском часов DS3231 + Atmega128

Прикупил модуль часов на DS3231, скачал библиотеку, все запустилось без проблем, но при отключении питания часы сбрасываются в 0 (батарейка стоит и все соединено правильно), пробовал менять библиотеку, толка от этого никакого постоянно идет сброс я так понимаю при инициализации шины именно на этой плате проходит код сброса... Это у меня появились такие мысли так как попробовал другую плату (nano atmega 328), с этим же модулем и с темже самым скетчем, все работает без проблем.

Вот сам скетч

ШД и accelstepper. не работает код



#include<AccelStepper.h>
 
#define HALFSTEP 8  
 
#define motorPin1  3 // IN1 на 1-м драйвере ULN2003
#define motorPin2  4 // IN2 на 1-м драйвере ULN2003
#define motorPin3  5 // IN3 на 1-м драйвере ULN2003
#define motorPin4  6 // IN4 на 1-м драйвере ULN2003
 
AccelStepper stepper1(HALFSTEP, motorPin1, motorPin3, motorPin2, motorPin4);
 
void setup(){
  stepper1.setMaxSpeed(1000.0);
  stepper1.setAcceleration(1000.0);
  stepper1.setSpeed(1000);
  stepper1.moveTo(20000);
}
 
void loop(){

Что означает строка в коде



#include <IRremote.h> // подключаем библиотеку
 
int ledPin = 13; // светодиод
int reciverPin = 11; // пин, к котрому подключен ИК-приемник
IRrecv irrecv(reciverPin);
  
decode_results results;
  
void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // запуск приемника
  pinMode(ledPin, OUTPUT);
}
  
void loop() {
  // постоянно считываем данные с приемника
  if (irrecv.decode(&results)) {
    // выводим в консольку, что получили, число в 16-ричном виде
    Serial.println(results.value, HEX);

NRF24Network передача массива

Всем привет. Есть пачка данных, которые нужно передать от ноды к ноде. Собираю их в массив и отправляю, примерно так (данные +- похожи):

int dataArr[6];

dataArr[0] = 1;
dataArr[1] = -28;
dataArr[2] = 0;
dataArr[3] = 230;
dataArr[4] = 1;
dataArr[5] = 6;

RF24NetworkHeader header(00);
network.write(header,&dataArr,sizeof(data));

сообщения уходят, но приходит чисто int (значение 400). Получается NRF24Network не умеет слать массивы? Либо просто я что то не понимаю?

Помощь по коду, простые функции

Здраствуйте ребята, прошу помощи в оптимизации коду)
Изучаю ардуино совсем не долго и накопилось множество вопросов, а от ответы на них трудно найти..
Посмотрите пожалуйста где косяки и что работать не будет. Проверить в деле не могу так как ардуинка в дороге, а изучать код хочется уже сейчас))
Благодарю за всякую помощь)))
[spoiler][html]
else (isnan(t)) {
Serial.println("Не удается считать показания");
digitalWrite(kran, LOW);
Serial.println("Кран выключен");
digitalWrite(vent, LOW);
Serial.println("Вентилятор выключен");
digitalWrite(led, LOW);// гасим лед,
return;