#1 Re: Программирование Arduino » Ошибка - macro names must be identifiers » 2016-11-23 22:16:03

Единственная книга, которая была на книжкой выставке) Если не сложно посоветуйте какую книгу можно купить , нужен бумажный вариант, электронки быстро бросаю, не дочитываю, или глаза начинают болеть..

#2 Программирование Arduino » Ошибка - macro names must be identifiers » 2016-11-23 18:38:34

ACA5
Ответов: 3

Код останавливает на 4ой строке

//Project 8 - быстродействующий термометр
#define 2 COLD
#define 4 NORMAL
#define 6 HOT  //вот здесь

float voltage = 0;
float celsius = 0;
float coldTemp = 20;
float hotTemp = 26;
float sensor = 0;

void setup() {
  pinMode(COLD, OUTPUT);
  pinMode(NORMAL, OUTPUT);
  pinMode(HOT, OUTPUT);
}

void loop() {
  //Прочитать напряжение с датчика температуры 
  //и преобразоватьв градусы цельсия
  sensor = analogRead(0);
  voltage = (sensor *5000)/1024;  //преобразовать в милливольты, учесть смещение
  voltage = voltage - 500;
  celsius = voltage/10;

  //выпонить действие для разных диапозонов температур
  if (celsius < coldTemp)
  {
    digitalWrite(COLD, HIGH);
    delay(1000);
    digitalWrite(COLD, LOW);
  } 
  else if (celsius > coldTemp && celsius <= hotTemp)
  {
    digitalWrite(NORMAL, HIGH);
    delay(1000);
    digitalWrite(NORMAL, LOW);
  } else 
  {
    digitalWrite(HOT, HIGH);
    delay(1000);
    digitalWrite(HOT, LOW);
  }
}

#4 Re: Программирование Arduino » Не получается тестер батареек » 2016-11-22 22:55:51

Ваш код для моей цепи написан был? Просто он ещё хуже работает, светодиоды тоже рандомно моргают, но тестер уже не работает. Если не так, то подскажите что исправить нужно в цепи?
С другом посидели над кодом методом проб вот что самое лучшее получилось родить. Вместо батареек использовал сетевой адаптер , чтоб удобнее было, поменял диапозоны напряжений . Светодиоды опять же ведут себя надекватно, горит то один, то два, то три, но они мерцают, дребезжат. На адаптере напряжение при установленном 4.5 В выдает, 4.61 вольт, но сам тестер врубает как видите желтый до 4.92, т.е. в самой цепи гуляет какое-то напряжение где-то в 305 вольт.
Начинаю подозревать, что это косяк моей ардуины.. Ещё раз прошу посмотреть, правильно ли я собрал цепь, а то может я упускаю нечто простейшее фундаментальное , т.к. это первая схема которую я собрал не по картинке.

// Проект 6 - Тестер для одноэлементных батареек
#define newLED 2 //зеленый светодиод "новая"
#define okLED 4  //желтый cветодиод "норма"
#define oldLED 6 //красный светодиод "старая"

int analogValue = 0;
float voltage = 0;
int ledDelay = 2000;

void setup() 
{
   pinMode(newLED, OUTPUT); 
   pinMode(okLED, OUTPUT);
   pinMode(oldLED, OUTPUT);  
}

void loop() 
{
   analogValue = analogRead(0);
   voltage = 0.0048*analogValue;
   
   if (voltage >=1 && voltage <= 4)  //напряжение от 1 до 4 - горит красный
   {
    digitalWrite(newLED, HIGH);  
    digitalWrite(okLED, LOW);
    digitalWrite(oldLED, LOW);    
   } 
   else if (voltage > 4 && voltage <= 4.92)  //напряжение от 4 до 4.92 - горит красный
   {    
    digitalWrite(newLED, LOW);
    digitalWrite(okLED, HIGH);
    digitalWrite(oldLED, LOW);
    //delay(ledDelay);
    //digitalWrite(okLED, LOW);
   }
     else if (voltage > 4.92)
   {    
    digitalWrite(okLED, LOW);
    digitalWrite(newLED, LOW);
    digitalWrite(oldLED, HIGH);    
  }
  else
  {
    digitalWrite(oldLED, LOW);  //если напряжение меньше 1 вольта - ничего не горит
    digitalWrite(okLED, LOW);   // но по факту они по прежнему горят
    digitalWrite(newLED, LOW);
  }

}

#5 Программирование Arduino » Не получается тестер батареек » 2016-11-22 19:04:48

ACA5
Ответов: 5

Правильно ли я собрал схему?

Тупо все по книжке сделал, только цепь по схеме,картинок не было , но как оказалось и тут может быть какой-то косяк. Светодиоды горят поочередно, как-то рандомно. При тесте батареек вроде реагируют, и то не в 100% случаях и всегда с какой-то небольшой задержкей.

Что делаю не так?
613f9908d26d.jpg
077e1f81ff54.jpg
94eb6803d544.jpg


// Проект 6 - Тестер для одноэлементных батареек
#define newLED 2 //зеленый светодиод "новая"
#define okLED 4  //желтый cветодиод "норма"
#define oldLED 6 //красный светодиод "старая"

int analogValue = 0;
float voltage = 0;
int ledDelay = 2000;

void setup() 
{
   pinMode(newLED, OUTPUT); 
   pinMode(okLED, OUTPUT);
   pinMode(oldLED, OUTPUT);  
}

void loop() 
{
   analogValue = analogRead(0);
   voltage = 0.0048*analogValue;
   if (voltage >= 1.6)
   {
    digitalWrite(newLED, HIGH);
    delay(ledDelay);
    digitalWrite(newLED, LOW);
   } 
   else if (voltage < 1.6 && voltage > 1.4)
   {
    digitalWrite(okLED, HIGH);
    delay(ledDelay);
    digitalWrite(okLED, LOW);
   }
   else if (voltage <= 1.4)
   {
    digitalWrite(oldLED, HIGH);
    delay(ledDelay);
    digitalWrite(oldLED, LOW);
   }
}


Попробовал от себя добавить значение low всем LEDам в setup, но потом удалил т.к. ничего не дало?
Что не так?

#6 Re: Программирование Arduino » Не получается цикл for » 2016-11-19 20:17:38

Ребята, извините ,что потратил ваше время, дико затупил, действительно были русские буквы, забыл поставить // в самом начале описании проекта. Зато теперь во мне появилась дополнительная уверннность, что если надо, то я не один и кто-нибудь может помочь, спасибо!)

#7 Re: Программирование Arduino » Не получается цикл for » 2016-11-19 20:15:06

У меня arduino uno r3 (если  это имеет значение). Перезапускал ide, все равно выдает ошибки. Менял на всякий случай имя переменной int, ничего не изменилось.

#8 Re: Программирование Arduino » Не получается цикл for » 2016-11-19 19:57:38

Это весь код. Светодиоды должны делать бегущую волну, без цикла for , просто поочередно повышая digitalWrite все работало.

#9 Программирование Arduino » Не получается цикл for » 2016-11-19 18:50:32

ACA5
Ответов: 5

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


int d = 100;

void setup() 
{
  pinMode(2, OUTPUT); //Устанавливаем пины  
  pinMode(3, OUTPUT); // со 2ого по 5ый как источнки
  pinMode(4, OUTPUT); //цифровых выходов
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);

}

void loop() 
{
  for ( int a = 2; a < 7; a++ )
  {
    digitalWrite(a, HIGH);
    delay(d);
    digitalWrite(a, LOW);
    delay(d);
  }
}


При проверке выдает ошибки
Куча таких с разными номерами в '\ '       
Project_2:1: error: stray '\260' in program 
и

Project_2:1: error: expected unqualified-id before numeric constant

C:\Users\Антон\Documents\Arduino\Project_2\Project_2.ino: In function 'void loop()':

Project_2:19: error: 'd' was not declared in this scope

exit status 1
stray '\320' in program

Подвал раздела