Проблема не могу врезать ШИМ в скеч просто не понимаю как Код (C++): void setup() {// Подсветка столешницы версия 1.0 // Начата 18.08.2016 // Автор Левчук А.В. //****************************************************************************************************** int ledPin =9; // подключаем -12в блока питания int trigPin = 8; // тригер int echoPin = 7; // эхо int dist1 = 20; // дистанция срабатывания int dist2 =0; // защита от неисправности датчика HC-SR04 int ledstate = LOW; long zaderhka = 20000; // время работы 20 сек unsigned long nahaloMillis = 0; // начало отсчета времени void setup() { Serial.begin (9600); // выводим на экран pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(9, OUTPUT); } void loop() { long duration; int cm; digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); cm = duration / 82; unsigned long prohloMillis; // if (ledstate==HIGH) // если светодиод светится { prohloMillis=millis(); if(prohloMillis-nahaloMillis>=zaderhka) //если больше задоного выключаем { ledstate = LOW; nahaloMillis = 0; digitalWrite(ledPin,ledstate); } } if( cm<dist1 ){ nahaloMillis = prohloMillis; // запоминаем время ledstate = HIGH; digitalWrite(9,ledstate); } if( cm==dist2 ){ nahaloMillis = prohloMillis; // запоминаем время ledstate = LOW; digitalWrite(9,ledstate); } // if( cm==dist2 ){ //digitalWrite(9,LOW);} delay(100); Serial.print(cm); Serial.print("."); Serial.println(" cm"); delay(150); }
ХЗ что имеется в виду "врезать ШИМ" Поэтому вот вам код плавного включения с использованием ШИМа. Код (C++): for (int i=0; i<255; i++) { analogWrite (9, i); delay (10); }
я понимаю. как ШИМ работает. а может у кого есть идея как туда врезать фоторезистор скажем при значении с него 700 светодиоды должны гореть value = 5 а при 300 на все 255 (при с работке датчика тоже выводить 250 при любом значении value)