Помогите я весь в раздумьях куда лучше подключить ? К 3 контакту или в разрыв - ?
Помогите я весь в раздумьях куда лучше подключить ? К 3 контакту или в разрыв - ?
Прошу прощения за, возможно, глупый вопрос.
В тексте программы есть оператор analogwrite (,). Так вот, собственно вопрос: модуль ардуино выдает действительно аналоговый сигнал (с ЦАПа, например), или, как я понял из текста, ШИМ сигнал?
И можно ли полевиком рулить не ШИМ а просто постоянкой, например с переменного резистора? Матрице не поплохеет?
analogwrite вадает на выход ШИМ
От пременника матрице плохо не станет , но полевик будет при этом греться
Все понял, спасибо!![]()
Кстати, после настройки сего скетча настоятельно рекомендую закомментарить строчки Serial.print(sens, DEC);
Serial.print(" ");
Особенно если к нему дополнительно дописывать что-то что будет слать информацию в комп. Иначе будет нестись неисчерпаемый поток мусора.
Еще могу предложить мой вариант прочтения программ от Чипа, если он не возражает.
В данном скетче объединены резистивные кнопки, автоматическая регулировка LED подсветки и добавлена реакция на включение заднего хода.
Отличия от первоисточников:
1. реакция на резистивные кнопки по факту нажатия а не отпускания т.е. практически мгновенно
2. Для регулировки яркости подсветки используется усредненное значение двух замеров при отсутствии дребезга и яркость сдвигается по единичке
3. При включении заднего хода яркость выставляется на максимум
4. Используются условные переходы, поэтому одновременно несколько действий не происходит и поэтому нет поводов для глюков
PHP код:
//AutoLight & Softresbutton & reverslight
//http://compcar.ru
#define PIN 5 //номер аналогового порта
#define LIMIT 10 //предел погрешности сопротивления
#define DELTA 5 //предел погрешности освещения
byte bytes[2];
int res_dt1, res_d;
int back_on = 12; //вход сигнал включения задней скорости
int ledPin = 9; //номер светодиодного порта
int light = 0;
int reallight = 0;
int oldlight = 0;
int sensVal_dt1 = 0;
int sensVal_d = 0;
void setup()
{
pinMode(back_on, INPUT);
digitalWrite(back_on, HIGH); //Подключить внутренний подтягивающий резистор
pinMode(ledPin, OUTPUT);
TCCR1B = TCCR1B & 0b11111000 | 1;
Serial.begin(115200); // настроить скорость com порта
}
void loop()
{
res_d = analogRead(PIN); // прочитать данные АЦП
delay(50);
res_dt1 = analogRead(PIN); // прочитать данные АЦП
if (res_dt1 > res_d-LIMIT && res_dt1 < res_d+LIMIT && res_dt1 < 900) // если сигнал резистивных кнопок не дребезжит и что-то нажато
{
bytes[0] = res_d & 255; // преобразовать в 2-байта
bytes[1] = (res_d & 768) >> 8;
Serial.write( bytes,2); // отправить прочитаное значение компьютеру
delay(700);
}
else if (digitalRead(back_on) == HIGH) //если нет сигнала резистивных кнопок надо проверить включен ли задний ход
{
delay(200);
light = 255; // ежели включен з.х.- сделать яркость на максимум (иначе нифига ночью не видно)
goto label;
}
else
{
sensVal_d = analogRead(0); // если нет з.х.- прочитать данные фоторезистора
delay(100);
sensVal_dt1 = analogRead(0); // опять прочитать данные фоторезистора
if(sensVal_dt1 > sensVal_d-DELTA && sensVal_dt1 < sensVal_d+DELTA ) // если разница между замерами незначительна
{
reallight = (sensVal_d + sensVal_dt1)/50 + 7; // присваиваем значению которое программа хотела бы отправить на светодиоды сумму этих замеров.
// можно дополнительно умножить или приплюсовать любое поправочное значение которое подойдет для настройки адекватной яркости
if(reallight == oldlight) //сравниваем желаемое для программы значение яркости со старым и если они не совпадают, то изменяем по единичке
{
light = oldlight;
}
else if(reallight > oldlight) //
{
light = ++oldlight;
}
else
{
light = --oldlight;
}
}
else
{
light = oldlight;
}
}
oldlight = light;
label:
constrain(light, 8, 255);
analogWrite(ledPin, light);
}
Последний раз редактировалось Chip; 06.11.2011 в 20:52.
Вот это, пожалуй, зря. Как раз в этой ситуации, ночью больше всего мешает его высокая яркость, когда приходится несколько раз переводить взгляд с задних стекол на дисплей. Я даже перестал на него смотреть, потому что глаза слепнут и некоторое время позади машины не удается ничего разглядеть...
Ну, каждому свое! Когда ночью яркость экрана на минимуме, да к тому-же изображение с камеры тоже очень темное, мне лично было ничего не видно. Теперь стало просто отлично. Кто-то писал про "нереально яркие" матрицы некоторых "Лилипутов". Возможно в таком случае данная опция окажется лишней, но у меня "Innolux" и мне надо яркость на полную.
в этом случае массы монитора и ардуины тож надо объединять?
Вопрос массы в автомобиле- это самая сложная из тем для обсуждения. Массы практически всех устройств так или иначе соединены с кузовом автомобиля, только эти цепочки масс бывают слишком длинными и сечение проводников слишком маленькое. Отсюда появляются разности потенциалов массы в различных точках электрооборудования, что может привести к некорректной его работе.
У меня, например, монитор запитан от блока питания компа, и ардуина через ЮСБшный шнурок соответственно тоже, поэтому массы объединены через системник. Вроде этого достаточно, но не факт что у всех будет так.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)