Показано с 1 по 4 из 4

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    55
    Сообщений
    13,382
    Вес репутации
    10

    По умолчанию Стробоскоп на arduino

    В прошлом видео я показывал как сделать псевдо левитацию воды, при помощи этого стробоскопа



    Стробоскоп собран на arduino nano и из старой, неисправной led лампы.
    Частота стробоскопа регулируется энкодером.
    При обычном вращении вперед или назад, частота стробоскопа изменяется с шагом 1 Гц.
    Если нажать и крутить энкодер, то частота изменяется с шагом 10 Гц.
    Начальная частота при включении ардуино 25 Гц.
    В скетче все эти параметры можно поменять, они подписаны
    Стробоскоп подойдет как для дискотеки, так и для домашних экспериментов.


    Схема стробоскопа:


    Скетч для ардуино:
    PHP код:
    #define encoder0PinA 2 // подключен пин А энкодера
    #define encoder0PinB 3 // подключен пин В энкодера
    #define encoder0Button 4 // подключена кнопка энкодера
    #define led_pin 13        // подключен светодиод
    #define step_freq 1     // шаг изменения частоты плавно
    #define step_freq_rough 10     // шаг изменения частоты грубо 1 Гц
    #define time_light 2    // время свечения светодиода в мс
    volatile int freq 250// частота в 25Гц умноженная на 10



    void setup() 
    {   
      
    pinMode(encoder0PinAINPUT_PULLUP);
      
    pinMode(encoder0PinBINPUT_PULLUP);
      
    pinMode(encoder0ButtonINPUT_PULLUP);
      
    pinMode(led_pinOUTPUT);
      
    attachInterrupt(0EncoderAFALLING);  // настроить прерывание interrupt 0
      
    attachInterrupt(1EncoderBFALLING);  // настроить прерывание interrupt 1



    void loop()

        
    digitalWrite(led_pin1);
        
    delay(time_light);                   
        
    digitalWrite(led_pin0);
        if(
    freq 1freq=1
        
    delay(10000/freq-time_light);
    }

    void EncoderA() // обработка прерывания
    {
      if(!
    digitalRead(encoder0Button) && digitalRead(encoder0PinA)) { freq+=step_freq*step_freq_rough; } //грубая настройка частоты
      
    else
      if(
    digitalRead(encoder0PinB)) {freq+=step_freq;}  //плавная настройка частоты
    }  

    void EncoderB() // обработка прерывания
    {
      if(!
    digitalRead(encoder0Button) && digitalRead(encoder0PinA)) { freq-=step_freq*step_freq_rough; } //грубая настройка частоты
      
    else
      if( 
    digitalRead(encoder0PinA)) { freq-=step_freq; }   //плавная настройка частоты


    Видео проверки стробоскопа
    Последний раз редактировалось Chip; 01.04.2018 в 21:50.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •