Arduino как второй мозг e-bike

atlet
Offline
Зарегистрирован: 08.12.2014

доброе время суток ,

я новичок и только начинаю пробовать писать для arduino

прошу помощи для открытого проекта -

/* Arduino as a second brain e-bike*/

const int sensAlarmPin10=10; // sensor capasitive ,infrared , alarm+
const int sensAlarmPin11=11; // alarm sensor vibratie ,alarm  A2+
const int sgnalPin4=4; // реле на динамик и фара max
const int buttonSignalPin5=5; // button signal alarm, liecht 100%+
const int swAlarmPin6=6;  // вкл режим  alarm
const int ledAlarmPin7=7; // индикация  режима Alarm (мигание 1 сек)+
const int swPin8=8; // вкл controler infineon  , magnit sw MK)+
const int swRemPin9=9; // sw rem ,stop signal NC +
const int ledPin14=14; // фара podsvetka 
const int ledStopPin15=15; // STOP фара+
const int sensFPin16=16; // fotoelement 

int value=0;

int buttonState;
int InfraredStatus;
int VibrationStatus;
int StopStatus;
int SignalStatus;
int lightLevel; 
int AlarmStatus;

void setup() 
{
 /* initialize ( команда pinMode служит для настройки цифровых портов/контактов платы. в переменная ledPin, ... 
   конфигурируется как вход/выход OUTPUT/INPUT ) pin  as an output:
    pinMode(Pin , OUTPUT); //Вывод устанавливается как ВХОД
    digitalWrite(Pin, HIGH ); // устанавливает HIGH (1)+5v/LOW(0), подкл подтягиваю-й резистор (как камутатор) нагрузка через 470 Ом\1кОм 
    digitalRead(Pin, HIGH); считывает значение с цифрового Вывода с результатом HIGH (1)/LOW(0), 
    analogRead (контакты 0-5) value=analogRead(pin);//переменная value=значению напряжения на INPUT/ U=5v шаг 0,0048v(0-1023) 
    аналоговые Выводы ненужно обьявлять как INPUT\OUTPUT */
   
 
 

  
pinMode(sgnalPin4, OUTPUT);  // 
pinMode(buttonSignalPin5, INPUT); 
 pinMode(swAlarmPin6, INPUT);
pinMode(ledAlarmPin7, OUTPUT); // индикация  режима Alarm (мигание 1 сек)
 pinMode(swPin8, INPUT); //
 pinMode(swRemPin9, INPUT);
 pinMode(sensAlarmPin10, INPUT);
 pinMode(sensAlarmPin11, INPUT);

pinMode(ledPin14, OUTPUT); // фара ????
 pinMode(ledStopPin15, OUTPUT); // STOP фара
 pinMode(sensFPin16, INPUT);
 
     }

void loop()
 /* бесконечный цикл  здесь присваиваются команды Цифровой ввод/вывод ,digitalRead/digitalWrite */
{

 buttonState = digitalRead(swPin8);  //  magnit  sw MK

 InfraredStatus=digitalRead(sensAlarmPin10);//infrared 10pin

VibrationStatus=digitalRead(sensAlarmPin11);//vibrate 11pin

StopStatus=digitalRead(swRemPin9);//STOP фара

SignalStatus=digitalRead(buttonSignalPin5);
AlarmStatus=digitalRead(swAlarmPin6);//вкл режим  alarm
 lightLevel = analogRead(sensFPin16);
analogWrite(ledPin14, lightLevel);

if (StopStatus !=LOW) // кнопка тормоза вкл,загорается задний STOP  
{
analogWrite(ledStopPin15, value=255);// STOP фара max  
delay(500);//небольшая защита от "дребезга" контактов кнопки 
      } 
else
{
analogWrite(ledStopPin15, value=0);// STOP фара max 
      } 
 if (SignalStatus != HIGH )
{
digitalWrite (sgnalPin4,LOW);
analogWrite(ledPin14, value=0);
}
else 
{
digitalWrite (sgnalPin4,HIGH); 
analogWrite(ledPin14, value=255);
delay(500);//небольшая защита от "дребезга" контактов кнопки 
     }
     
 
     
if ( buttonState != HIGH) // magnit sw MK
 {
digitalWrite(ledAlarmPin7,HIGH);
delay(1000);  
digitalWrite(ledAlarmPin7,LOW); // индикация режима Alarm (мигание 1 сек) Pin=7
delay(1000);

     }
else  
{
digitalWrite(ledAlarmPin7, LOW);
      }

if (VibrationStatus == HIGH && InfraredStatus == HIGH )
{
digitalWrite (sgnalPin4,HIGH);
delay(10800000);// 60*60*3*1000
digitalWrite(sgnalPin4, LOW); 

      }

else
{
digitalWrite (sgnalPin4,LOW);
}

   void manualTune()
{
  lightLevel = map(lightLevel, 300, 800, 0, 255);/*настраивать в ручную Просто меняем 0, 1023 в страке ниже на что-то типа 300-800*/
lightLevel = constrain(lightLevel, 0, 255);
}

}
   
   ---------------------------------------------------------------------------------------
sketch_dec02a.ino: In function 'void loop()':
sketch_dec02a:124: error: a function-definition is not allowed here before '{' token

суть его в следующем 

- двух уровневая сигнализация 

1) уровень ,дистанционное предупреждение (детектор движения)

2) детектор вибрации вкл алярм .(вперспективе хотелосьбы реализовать идею с звонком на сотовый)

-скрытое вкл контролера - геркон или потайная кнопка 

(вперспективе хотелосьбы реализовать идею с электронным ключём)

- звуковой сигнал

- автоматическое управление габаритным светом с помощью фоторезистора

- поворотные сигнальные огни 

в выложенном скетче компилятор находит в конце  ошибку с фигурной скопкой (121)

как мне ее разрешить ?

спасибо всем, кто проявит интерес к этой работе 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

у тебя скобка лишняя

atlet
Offline
Зарегистрирован: 08.12.2014

если убираю скобки (221  224 )то получаю это

sketch_dec02a.ino: In function 'void loop()':
sketch_dec02a:127: error: expected initializer before 'lightLevel'
An25
Offline
Зарегистрирован: 19.09.2014

126 строку перенеси в 119

( код не проверял)

An25
Offline
Зарегистрирован: 19.09.2014

мельком глянул код -

110delay(10800000);

это что? проц будет тупо в простое 10800 секунд ...

atlet
Offline
Зарегистрирован: 08.12.2014

спасибо An25 ,

все скомпелировалось , завтра буду тестить :)

atlet
Offline
Зарегистрирован: 08.12.2014

немного подправил скеч в итоге

кнопки стоп сигнала и фары работают

индикауия алярма мигает (081) при buttonState != HIGH( swPin8=8; // вкл controler infineon  , magnit sw )

 но два сенсора (092) почемуто включают алярм в противоположном  режиме  отключеного алярма( при buttonState == HIGH т.е. при включенном контролере infineon)

этот  вариант для (092) не проходит

if ( ( buttonState != HIGH) && (VibrationStatus == HIGH && InfraredStatus == HIGH ))

{
digitalWrite(AlarmPin6,HIGH);// вкл.алярм 
delay(5000);// 5 sek
    }
else  
{
digitalWrite(AlarmPin6, LOW);

      }

подскажите ,что я делаю не так...



const int sensAlarmPin10=10; // sensor capasitive ,infrared , alarm - OK
const int sensAlarmPin11=11; // alarm sensor vibratie ,alarm  A2 -OK
const int sgnalPin4=4; // реле на динамик и фара max - OK
const int buttonSignalPin5=5; // button звуковой сигнал, фара 100% - OK
const int AlarmPin6=6;  // вкл режим  alarm -
const int ledAlarmPin7=7; // индикация  режима Alarm (мигание 1 сек)-OK
const int swPin8=8; // вкл controler infineon  , magnit sw MK)- OK
const int swRemPin9=9; // sw rem ,stop signal - OK
const int ledPin14=14; // фара podsvetka  -
const int ledStopPin15=15; // STOP фара -OK
const int sensFPin16=16; // fotoelement -

int lightLevel, high = 0, low = 1023;// fotoelement 
int value=0;
int buttonState;// вкл controler infineon  , magnit sw MK)
int InfraredStatus;// alarm sensor capasitive ,infrared 
int VibrationStatus; // alarm sensor vibratie ,alarm  A2
int StopStatus; //STOP фара
int SignalStatus;// button звуковой сигнал, фара 100%
int AlarmStatus;

void setup() 
{
  
 /* initialize ( команда pinMode служит для настройки цифровых портов/контактов платы. в переменная ledPin, ... 
   конфигурируется как вход/выход OUTPUT/INPUT ) pin  as an output:
    pinMode(Pin , OUTPUT); //Вывод устанавливается как ВХОД
    digitalWrite(Pin, HIGH ); // устанавливает HIGH (1)+5v/LOW(0), подкл подтягиваю-й резистор (как камутатор) нагрузка через 470 Ом\1кОм 
    digitalRead(Pin, HIGH); считывает значение с цифрового Вывода с результатом HIGH (1)/LOW(0), 
    analogRead (контакты 0-5) value=analogRead(pin);//переменная value=значению напряжения на INPUT/ U=5v шаг 0,0048v(0-1023) 
    аналоговые Выводы ненужно обьявлять как INPUT\OUTPUT */
  
pinMode(sgnalPin4, OUTPUT);  // реле на динамик и фара max
pinMode(buttonSignalPin5, INPUT); // button звуковой сигнал, фара 100%
 pinMode(AlarmPin6, OUTPUT);// вкл алярм
pinMode(ledAlarmPin7, OUTPUT); // индикация  режима Alarm (мигание 1 сек)
 pinMode(swPin8, INPUT); // вкл controler infineon  , magnit sw MK)
 pinMode(swRemPin9, INPUT);
 pinMode(sensAlarmPin10, INPUT);
 pinMode(sensAlarmPin11, INPUT);

pinMode(ledPin14, OUTPUT); // фара ????
 pinMode(ledStopPin15, OUTPUT); // STOP фара
 pinMode(sensFPin16, INPUT);// fotoelement 
     }
void loop()
 /* бесконечный цикл  здесь присваиваются команды Цифровой ввод/вывод ,digitalRead/digitalWrite */
{
 buttonState = digitalRead(swPin8);  //  magnit  sw MK

 InfraredStatus=digitalRead(sensAlarmPin10);//infrared 10pin

VibrationStatus=digitalRead(sensAlarmPin11);//vibrate 11pin

StopStatus=digitalRead(swRemPin9);//STOP фар
SignalStatus=digitalRead(buttonSignalPin5);
AlarmStatus=digitalRead(AlarmPin6);//вкл режим  alarm
lightLevel = analogRead(sensFPin16);//фоторезистор управление авто подсветкой габаритов
analogWrite(ledPin14, lightLevel);// подсветка габариты

if ( StopStatus !=LOW) // кнопка тормоза вкл,загорается задний STOP
{
analogWrite(ledStopPin15, value=255);// STOP фара max 
delay(200);//небольшая защита от "дребезга" контактов кнопки 
      } 
else
{
analogWrite(ledStopPin15, value=0);// STOP фара max 
      } 
 if (SignalStatus != HIGH )
{
digitalWrite (sgnalPin4,LOW);
analogWrite(ledPin14, value=0);
}
else 
{
digitalWrite (sgnalPin4,HIGH); 
analogWrite(ledPin14, value=255);
//небольшая защита от "дребезга" контактов кнопки 
     }      
if ( buttonState != HIGH) // magnit sw MK
 {
digitalWrite(ledAlarmPin7,HIGH);
delay(1000);  
digitalWrite(ledAlarmPin7,LOW); // индикация режима Alarm (мигание 1 сек) Pin=7
delay(1000);
     }
else  
{
digitalWrite(ledAlarmPin7, LOW);
      }
if (VibrationStatus == HIGH && InfraredStatus == HIGH )
{
digitalWrite(AlarmPin6,HIGH);// вкл.алярм 
delay(5000);// 5 sek
    }
else  
{
digitalWrite(AlarmPin6, LOW);
      }
}
   void manualTune()
{
  lightLevel = map(lightLevel, 300, 800, 0, 255);/*настраивать в ручную Просто меняем 0, 1023 в страке ниже на что-то типа 300-800*/
lightLevel = constrain(lightLevel, 0, 255);
      }