kopilkaurokov.ru - сайт для учителей

Создайте Ваш сайт учителя Курсы ПК и ППК Видеоуроки Олимпиады Вебинары для учителей

"Робототехника"

Нажмите, чтобы узнать подробности

Робототхника и программирование.

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

  • Мы создали массив типа byte: каждый его элемент это 1 байт, 8 бит, может принимать значения от 0 до 255.
  • Символы арабских цифр закодированы состоянием пинов, которые соединены с выводами соответствующих сегментов: 0, если сегмент должен быть выключен, и 1, если включен.
  • В переменную mask мы помещаем тот элемент массива numberSegments, который соответствует текущей секунде, вычисленной в предыдущей инструкции.
  • В цикле for мы пробегаем по всем сегментам, извлекая с помощью встроенной функции bitRead нужное состояние для текущего пина, в которое его и приводим с помощью digitalWrite и переменной enableSegment
  • bitRead(x, n) возвращает boolean значение: n-ный бит справа в байте x
Вы уже знаете о суперспособностях современного учителя?
Тратить минимум сил на подготовку и проведение уроков.
Быстро и объективно проверять знания учащихся.
Сделать изучение нового материала максимально понятным.
Избавить себя от подбора заданий и их проверки после уроков.
Наладить дисциплину на своих уроках.
Получить возможность работать творчески.

Просмотр содержимого документа
«"Робототехника"»

Тема: «Секундомер»

Цели: В этом эксперименте мы создаем секундомер, который считает до 10.

Дополнительная информация: https://yandex.kz/video/search?text=%D1%81%D0%B5%D0%BA%D1%83%D0%BD%D0%B4%D0%BE%D0%BC%D0%B5%D1%80%20%D0%B0%D1%80%D0%B4%D1%83%D0%B8%D0%BD%D0%BE&path=wizard&parent-reqid=1585289306327045-557933937016882769100288-production-app-host-sas-web-yp-189&filmId=5188084443219172127



Список деталей для эксперимента

  • 1 плата Arduino Uno

  • 1 беспаечная макетная плата

  • семисегментный индикатор

  • резисторов номиналом 220 Ом

  • 9 проводов «папа-папа»

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

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

Обратите внимание

  • Выводы 3 и 8 семисегментного индикатора оба являются катодами, к земле можете подключать любой из них.

  • Внимательно рассмотрите схему, сопоставьте сегменты индикатора с номерами его ножек, а те, в свою очередь, с пинами Arduino, к которым мы их подключаем.

  • Вывод 5 индикатора — это точка. Мы не используем её в этом эксперименте

  • Сегменты индикатора — просто светодиоды, поэтому мы используем резистор с каждым из них.

Скетч

p130_seven_segment_counter.ino

#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

pinMode(i + FIRST_SEGMENT_PIN, OUTPUT);

}

 

void loop()

{

// определяем число, которое собираемся отображать. Пусть им

// будет номер текущей секунды, зацикленный на десятке

int number = (millis() / 1000) % 10;

// получаем код, в котором зашифрована арабская цифра

int mask = numberSegments[number];

// для каждого из 7 сегментов индикатора...

for (int i = 0; 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

Вопросы для проверки себя

  1. К которой ножке нашего семисегментного индикатора нужно подключать землю?

  2. Как мы храним закодированные символы цифр?

  3. Каким образом мы выводим символ на индикатор?

Задания для самостоятельного решения

  1. Измените код, чтобы индикатор отсчитывал десятые секунды.

  2. Поменяйте программу так, чтобы вместо символа «0» отображался символ «А».

  3. Дополните схему и программу таким образом, чтобы сегмент-точка включался при прохождении четных чисел и выключался на нечетных




Получите в подарок сайт учителя

Предмет: Прочее

Категория: Уроки

Целевая аудитория: 5 класс.
Урок соответствует ФГОС

Скачать
"Робототехника"

Автор: Дандыбаев Сагадат Тулегенович

Дата: 09.04.2020

Номер свидетельства: 545869

Похожие файлы

object(ArrayObject)#851 (1) {
  ["storage":"ArrayObject":private] => array(6) {
    ["title"] => string(42) ""Робототехника в школе""
    ["seo_title"] => string(25) "robototiekhnika_v_shkolie"
    ["file_id"] => string(6) "367009"
    ["category_seo"] => string(10) "vneurochka"
    ["subcategory_seo"] => string(7) "prochee"
    ["date"] => string(10) "1481128629"
  }
}
object(ArrayObject)#873 (1) {
  ["storage":"ArrayObject":private] => array(6) {
    ["title"] => string(62) "Робототехника в Инженерной школе "
    ["seo_title"] => string(39) "robototiekhnika-v-inzhieniernoi-shkolie"
    ["file_id"] => string(6) "100458"
    ["category_seo"] => string(10) "vneurochka"
    ["subcategory_seo"] => string(7) "prochee"
    ["date"] => string(10) "1402381094"
  }
}
object(ArrayObject)#851 (1) {
  ["storage":"ArrayObject":private] => array(6) {
    ["title"] => string(73) "Проектная деятельность в робототехнике"
    ["seo_title"] => string(39) "proektnaia_deiatelnost_v_robototekhnike"
    ["file_id"] => string(6) "532908"
    ["category_seo"] => string(7) "prochee"
    ["subcategory_seo"] => string(11) "presentacii"
    ["date"] => string(10) "1576846765"
  }
}
object(ArrayObject)#873 (1) {
  ["storage":"ArrayObject":private] => array(6) {
    ["title"] => string(95) "Рабочая программа кружка "Робототехника" в 4-6 классы"
    ["seo_title"] => string(57) "rabochaia-proghramma-kruzhka-robototiekhnika-v-4-6-klassy"
    ["file_id"] => string(6) "251456"
    ["category_seo"] => string(10) "vneurochka"
    ["subcategory_seo"] => string(12) "planirovanie"
    ["date"] => string(10) "1447246371"
  }
}
object(ArrayObject)#851 (1) {
  ["storage":"ArrayObject":private] => array(6) {
    ["title"] => string(65) "Рабочая программа по Робототехнике"
    ["seo_title"] => string(37) "rabochaia_programma_po_robototekhnike"
    ["file_id"] => string(6) "494740"
    ["category_seo"] => string(7) "prochee"
    ["subcategory_seo"] => string(7) "prochee"
    ["date"] => string(10) "1547165587"
  }
}


Получите в подарок сайт учителя

Видеоуроки для учителей

Курсы для учителей

ПОЛУЧИТЕ СВИДЕТЕЛЬСТВО МГНОВЕННО

Добавить свою работу

* Свидетельство о публикации выдается БЕСПЛАТНО, СРАЗУ же после добавления Вами Вашей работы на сайт

Удобный поиск материалов для учителей

Ваш личный кабинет
Проверка свидетельства