помогите дописать скетч
- Войдите на сайт для отправки комментариев
Пт, 25/03/2016 - 09:50
Приветствую всех. я в ардуино новичек. помогите советом. как заставить выполняться программу пока есть сигнал на шим входе. например - пока есть сигнал, загорается светодиод, как сигнал пропадает, светодиод гаснет. и как зациклить работу в данном примере
#define FIRST_LED 4
#define TOTAL_LEDS 10
int ledPin = FIRST_LED;
void setup()
{
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
}
void loop()
{
digitalWrite(ledPin, HIGH);
delay(100);
ledPin = (ledPin - FIRST_LED +1) % TOTAL_LEDS + FIRST_LED;
digitalWrite(ledPin, LOW);// поочередно включаем светодиоды, а когда шкала заполнилась вся - гасим:
}
Про ШИМ ведь где-то прочитали? Либо читайте еще раз, пока не разберетесь. Либо предъявите всем источник в котором говорится о сигнале ШИМ на входе. Пока не понятно, что именно Вы хотите сделать.
И с этим материалом ознакомьтесть http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii
не совсем понятно что нужно, но может поможет если вбить в гугл "arduino бегущий огонек" там и ютуб и так много ссылок, а на основе примеров уже свой дописать...
чтобы не создавать лишних тем, нужен совет по счетчику импульсов.
выдернул часть из найденых скетчей, считает нормально, не могу понять cnt++ когда значение меняет? по переднему фронту импульса или когда он закончен?
После выполнения условия in1 == HIGH && in1_last ==LOW
а на человеческом языке?
просто in1 вижу считывает состояние IN1, а in_last когда Low? (т.е. я понимаю перевод слова last, но думаю ничего неизменится если написать next)
А на человеческом языке надо код нормально приводить, а не абы как выдранный кусок.
в данном куске кода in_last у вас не меняется тк прописан константой
static
int
in1_last = HIGH;
там вроде больше ничего относящегося к изменению cnt нету
все, понял, в конце заметил, т.е. передний фронт импульса
а цель то какая? поочередно лампочками мигать?
не, по подсчету импульсов выполнять действия уже в другом скетче,
надо было понять в какой момент cnt1 станет например 100, и понять во втором канале в данный момент еще идет импульс или нет (два канала со сдвигом 90 градусов)
спасибо за быстрые ответы
все, понял, в конце заметил, т.е. передний фронт импульса
Это зависит от того, что вы импульсом считать будете :)
не совсем понятно что нужно, но может поможет если вбить в гугл "arduino бегущий огонек" там и ютуб и так много ссылок, а на основе примеров уже свой дописать...
чтобы не создавать лишних тем, нужен совет по счетчику импульсов.
выдернул часть из найденых скетчей, считает нормально, не могу понять cnt++ когда значение меняет? по переднему фронту импульса или когда он закончен?
Вот же условие: (in1 == HIGH && in1_last ==LOW) : когда сигнал HIGH, а до этого был LOW - передний фронт.
это случайно не светодиодный тахометр будет?) я задался целью сделать такой на мотоцикл)
с тахомтером все проще намного
нет. это бегущие поворотники. но чтобы не тянуть провода до подрулевых переключателей, в качестве сигнала использовать прерывание напряжения на лампе.