Самоделкин
Главная страница

1. Программирование на Scratch

Введение

Первая программа

Кот и Бизон
Кот и Пес

Мультик с костюмами

Приключения Котенка
Мультик с приведениями

Игра с минами

Мультик про бабочку
Мультик про пчелку
Игра с двумя уровнями
Игра про волшебника
Кот математик
Кот с реактивным ранцем
Общение с персонажем
Викторина
Игра платформер
Кошачий боулинг
 

3. Программирование на S4A

Введение
Маячок
Нарастающая яркость
Управляемая яркость
Бегущий огонек
Секундомер
Ночной светильник
Кнопочный переключатель

 

Программирование на Arduino IDE

Эксперимент. Секундомер.

Для удобства приводим схему подключения светодиода на Arduino:

Принципиальная схема

Схема на макетке

 Программа       

               #define FIRST_SEGMENT_PIN   2
               #define SEGMENT_COUNT       7

              
// префикс «0b» означает, что целое число за ним записано в
              
// в двоичном коде. Единицами мы обозначим номера сегментов
              
// индикатора, которые должны быть включены для отображения
              
// арабской цифры. Всего цифр 10, поэтому в массиве 10 чисел.
              
// Нам достаточно всего байта (англ. byte, 8 бит) для хранения
              
// комбинации сегментов для каждой из цифр.
              
byte numberSegments[10] = {
              
0b00111111, 0b00001010, 0b01011101, 0b01011110, 0b01101010,
              
0b01110110, 0b01110111, 0b00011010, 0b01111111, 0b01111110,
               };

               
void setup()
               {
              
for (int i = 0; i < SEGMENT_COUNT; ++i)
              
pinMode(i + FIRST_SEGMENT_PIN, OUTPUT);
               }
               void loop()
               {

              
// определяем число, которое собираемся отображать. Пусть им
              
// будет номер текущей секунды, зацикленный на десятке
               
int number = (millis() / 1000) % 10;
              
// получаем код, в котором зашифрована арабская цифра
              
int mask = numberSegments[number];
              
// для каждого из 7 сегментов индикатора...
              
for (int i = 0; i < SEGMENT_COUNT; ++i) {
              
// ...определяем: должен ли он быть включён. Для этого
              
// считываем бит (англ. read bit), соответствующий текущему
              
// сегменту «i». Истина — он установлен (1), ложь — нет (0)
               
boolean enableSegment = bitRead(mask, i);
              
// включаем/выключаем сегмент на основе полученного значения
               
digitalWrite(i + FIRST_SEGMENT_PIN, enableSegment);
              
}
               }

Пояснения к коду

  • Мы создали массив типа byte: каждый его элемент это 1 байт, 8 бит, может принимать значения от 0 до 255.

  • Символы арабских цифр закодированы состоянием пинов, которые соединены с выводами соответствующих сегментов: 0, если сегмент должен быть выключен, и 1, если включен.

  • В переменную mask мы помещаем тот элемент массива numberSegments, который соответствует текущей секунде, вычисленной в предыдущей инструкции.

  • В цикле for мы пробегаем по всем сегментам, извлекая с помощью встроенной функции bitReadнужное состояние для текущего пина, в которое его и приводим с помощью digitalWrite и переменной enableSegment

  • bitRead(x, n) возвращает boolean значение: n-ный бит справа в байте x

 

 

                                                                               С оригиналом статьи вы можете ознакомиться на сайте Amperka.ru

2. Схемотехника

Введение

Понятие электричества

Принципиальные схемы
Законы электричества
Управление электричеством
Делитель напряжения
Быстрая сборка схем
Конденсатор
Резистор
Диод
Светодиод
Светодиодные сборки
Тактовая кнопка
Биполярный транзистор
Полевой транзистор
Пьезодинамик
Мотор
 

4. Программирование на Arduino IDE

Введение
Маячок
Нарастающая яркость
Управляемая яркость
Бегущий огонек
Секундомер
Ночной светильник
Кнопочный переключатель
Датчик расстояния
Датчик влажности
Датчик движения
Датчик детектор линии
Пьезоизлучатель
Драйвер двигателя