Первая программа
- Войдите на сайт для отправки комментариев
Пнд, 05/12/2016 - 21:13
Доброго времени суток, подскажите пожалуйста в чем "затык"
управление зарядко аккума
прога 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);
}
Возможно я ошибаюсь, но мне кажется, что затык у Вас в том,что Вы не можете сформулировать проблему.
cтратор,
это Вы нам объясните в чём затык, мож оно у Вас прекрасно работает.... хотя нет "прога" хорошо работать не может по определению.
по 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 то реле отключает "заряд"
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); }Понятно.
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); }работает, спасибо.
HIGH и LOW перепутанны