Первая программа

cтратор
Offline
Зарегистрирован: 05.12.2016

Доброго времени суток, подскажите пожалуйста в чем "затык"

управление зарядко аккума

прога 1:

  int analogInput = A1;
float vout = 0.0;
float vin = 0.0;
int minn = 12.40;
int maxx = 12.70;
int value = 0;
float R1 = 30000.0; 
float R2 = 7500.0;
 
void setup(){
   pinMode(analogInput, INPUT);
   Serial.begin(9600);
   Serial.print("DC VOLTMETER");
   pinMode(12, OUTPUT);
//   digitalWrite (12, HIGH);
 }
 
void loop(){
   // read the value at analog input
   value = analogRead(analogInput);
   vout = (value * 5.0) / 1023.0; // see text
   vin = vout / (R2/(R1+R2)); 
   
Serial.print("INPUT V= ");
Serial.println(vin,2);

//  String str = "a";

  switch(vin())
  {
    case < "minn":
    digitalWrite (12, LOW);

      break;
    case > "maxx":
    digitalWrite (12, HIGH);

      break;
  }

//if (vin > minn) digitalWrite (12, LOW);

//if (vin < maxx) digitalWrite (12, HIGH);

delay(1000);
} 

прога 2:

  int analogInput = A1;
float vout = 0.0;
float vin = 0.0;
int minn = 12.40;
int maxx = 12.70;
int value = 0;
float R1 = 30000.0; 
float R2 = 7500.0;
 
void setup(){
   pinMode(analogInput, INPUT);
   Serial.begin(9600);
   Serial.print("DC VOLTMETER");
   pinMode(12, OUTPUT);
//   digitalWrite (12, HIGH);
 }
 
void loop(){
   // read the value at analog input
   value = analogRead(analogInput);
   vout = (value * 5.0) / 1023.0; // see text
   vin = vout / (R2/(R1+R2)); 
   
Serial.print("INPUT V= ");
Serial.println(vin,2);
if (vin > minn) digitalWrite (12, LOW);

if (vin < maxx) digitalWrite (12, HIGH);

delay(1000);
} 

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Возможно я ошибаюсь, но мне кажется, что затык у Вас в том,что Вы не можете сформулировать проблему.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

cтратор,

это Вы нам объясните в чём затык, мож оно у Вас прекрасно работает.... хотя нет "прога" хорошо работать не может по определению.

cтратор
Offline
Зарегистрирован: 05.12.2016

по IF неработает
пробывал по switch тоже самое
12 выход "включился" а далее без изменений при выходе за приделы мин и макс.
по шнуру напругу измеряет и пишет на компе      

DC VOLTMETERINPUT V= 12.41
INPUT V= 12.71
INPUT V= 12.73
INPUT V= 12.73
INPUT V= 12.73
INPUT V= 12.73
INPUT V= 12.73
INPUT V= 12.73
INPUT V= 12.76
INPUT V= 12.78
INPUT V= 12.76
INPUT V= 12.76
ардуно подключенна к аккомулятору, а тот через реле к источнику питания 20 вольт(+резистор)
если напряжение меньше 12.4 то реле поключает "заряд"
если напряжение меньше 12.7 то реле отключает "заряд"      

cтратор
Offline
Зарегистрирован: 05.12.2016

  int analogInput = A1;
float vout = 0.0;
float vin = 0.0;
float minn = 12.40; // напряжение при котором заряд включается
float maxx = 12.70; // напряжение при котором заряд выключается
int value = 0;
float R1 = 30000.0; // сопротивление резистора 1
float R2 = 7500.0;  // сопротивление резистора 2

void setup(){
  pinMode(analogInput, INPUT);
  Serial.begin(9600);
  Serial.print("DC VOLTMETER");
  pinMode(12, OUTPUT);
}
void loop(){
  // read the value at analog input
  value = analogRead(analogInput);
  vout = (value * 5.0) / 1023.0; // see text
  vin = vout / (R2/(R1+R2));
 
Serial.print("INPUT V= ");
Serial.println(vin,2);

if (vin > maxx) digitalWrite (12, LOW); // высокое напряжение - выключаем
if (vin < minn) digitalWrite (12, HIGH); //низкое напряжение - включаем

delay(1000);
}
ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Понятно.

cтратор
Offline
Зарегистрирован: 05.12.2016
  int analogInput = A1;
float vout = 0.0;
float vin = 0.0;
float minn = 12.00; // напряжение при котором заряд включается
float maxx = 14.50; // напряжение при котором заряд выключается
int value = 0;
float R1 = 30000.0; // сопротивление резистора 1
float R2 = 7500.0;  // сопротивление резистора 2

 
void setup(){
   pinMode(analogInput, INPUT);
   Serial.begin(9600);
   Serial.print("DC VOLTMETER");
   pinMode(7, OUTPUT);
   pinMode(13, OUTPUT);
 }
 
void loop(){
   // read the value at analog input
   value = analogRead(analogInput);
   vout = (value * 5.0) / 1023.0; // see text
   vin = vout / (R2/(R1+R2)); 
   
Serial.print("INPUT V= ");
Serial.println(vin,1);

if (vin > maxx) digitalWrite (7, HIGH); // высокое напряжение - выключаем

delay(100);
if (vin < minn) digitalWrite (7, LOW); //низкое напряжение - включаем 


delay(100);
digitalWrite (13, LOW);
delay(100);
digitalWrite (13, HIGH);


//delay(1000);
} 

работает, спасибо.

cтратор
Offline
Зарегистрирован: 05.12.2016

HIGH и LOW перепутанны