шаблоны сайт визитка joomla
Скачать шаблоны Joomla 3.5 бесплатно
Вы находитесь здесь:Главная»РобоФест - Башкортостан 2018»Показать содержимое по тегу: Школа программирования - Толтек Плюс - Учебный центр в г.Стерлитамак

Беспилотные летательные аппараты

Вторник, 03 октября 2017 11:10

 Курс "Беспилотные летательные аппараты" дает знания и понятий в области беспилотных летательных аппаратов, которые в будущем помогут определиться с будущей профессией и местом учебы вашего ребенка. Учащиеся в нашего учебного центра, на курсе “Школа квадрокоптеров”, получают в пользование комплекты коптеров разных моделей (1 пара - 1 коптер), которые будут изучать, собирать, совершенствовать и конечно же ЛЕТАТЬ. На курс "Беспилотные летательные аппараты"принимаются дети от 14 до 17 лет.


3D моделирование и 3D печать

Понедельник, 02 октября 2017 10:47

В рамках курса школьник получит незабываемые эмоции при разработке моделей реальных объектов, создаст объемные картины и напечатает новую фигурку на 3D принтере. Практические навыки 3D-моделирования и печати и разовьют пространственное воображение, а также улучшат знания геометрии.


Светодиодная матрица на базе MAX7219

Вторник, 27 сентября 2016 11:58

Часто в проектах по робототехнике приходится использовать светодиоды. Иногда проще использовать светодиодные матрицы. В этом примере мы рассмотрим светодиодную матрицу 8 на 8, на которой будем  выводить изображения глаз и сердца.  Для удобства подключения используем модуль матричного дисплея Max7219 и библиотеку LedControl.

Для сборки побребуется:

Ардуино Уно

Модуль матричного дисплея MAX7219

Соединительные провода

Схема подключения:

Circuito Matriz 8x8 Max7219

Пример №1 программного кода:

/* на дисплей выводится сердце*/

#include <LedControl.h>
LedControl lc = LedControl(4, 6, 5, 8); // контакты: DIN,CLK,CS,
char incomingByte;
byte love[] =
{
B00001100,
B00011110,
B00111110,
B01111100,
B01111100,
B00111110,
B00011110,
B00001100,
};
void OutGlazaLove()
{
for (int i = 0; i < 8; i++)
{
lc.setRow(0, i, love[i]);
}
}
void setup() {
lc.shutdown(0, false); // Включаем дисплеи
lc.setIntensity(0, 5); // Установка яркости
lc.clearDisplay(0); // Очищаем дисплей
OutGlazaLove();
}
void loop() {

}


max7219 schema1

Рассмотрим пример последовательного  подключения двух модулей матричного дисплея Max7219

Пример №2 программного кода:

/* на дисплей выводится сердце,  мелкий зрачок, большие глаза в зависимости от того, какую клавишу нажмет пользователь. Чтобы ввести  данные, вам потребуется открыть монитор последовательного порта*/

#include <LedControl.h>
LedControl lc = LedControl(7, 4, 5, 8); // контакты: DIN,CLK,CS,
char incomingByte;
byte glaza[] =
{
B00000000,
B00000000,
B00011000,
B00111100,
B00111100,
B00011000,
B00000000,
B00000000
};
byte glazaBig[] =
{
B00000000,
B00011000,
B00111100,
B01100110,
B01100110,
B00111100,
B00011000,
B00000000
};
byte love[] =
{
B00001100,
B00011110,
B00111110,
B01111100,
B01111100,
B00111110,
B00011110,
B00001100,
};
void OutGlaza()
{
for (int i = 0; i < 8; i++)
{
lc.setRow(0, i, glaza[i]);
lc.setRow(1, i, glaza[i]);
}
}
void OutGlazaBig()
{
for (int i = 0; i < 8; i++)
{
lc.setRow(0, i, glazaBig[i]);
lc.setRow(1, i, glazaBig[i]);
}
}
void OutGlazaLove()
{
for (int i = 0; i < 8; i++)
{
lc.setRow(0, i, love[i]);
lc.setRow(1, i, love[i]);
}
}
void setup() {
lc.shutdown(0, false);
lc.shutdown(1, false);
lc.setIntensity(0, 5);
lc.setIntensity(1, 5);
lc.clearDisplay(0);
lc.clearDisplay(1);
Serial.begin(9600);
while (!Serial) ;
}
void loop() {
if (Serial.available() > 0) {
incomingByte = Serial.read();
if (incomingByte == '1') {
OutGlaza();
}
if (incomingByte == '2') {
OutGlazaBig();
}
if (incomingByte == '3') {
OutGlazaLove();
}
}
}


Широтно-импульсная модуляция (ШИМ)

Рано или поздно нам надоест, что светодиод всегда светит ярко или моторы крутятся с постоянной скоростью. Но на помощь приходят ШИМ-порты. Широтно-Импульсная модуляция, или ШИМ, это операция получения изменяющегося аналогового значения посредством цифровых устройств. Другими словами, устройства используются для получения прямоугольных импульсов - сигнала, который постоянно переключается между максимальным и минимальным значениями.   Данный сигнал моделирует напряжение между максимальным значением (5 В) и минимальным (0 В), изменяя при этом длительность времени включения 5 В относительно включения 0 В. Длительность включения максимального значения называется шириной импульса. Для получения различных аналоговых величин изменяется ширина импульса. При достаточно быстрой смене периодов включения-выключения можно подавать постоянный сигнал между 0 и 5 В на светодиод, тем самым управляя яркостью его свечения.

На графике зеленые линии отмечают постоянные временные периоды. Длительность периода обратно пропорциональна частоте ШИМ. Т.е. если частота ШИМ составляет 500 Гц, то зеленые линии будут отмечать интервалы длительностью в 2 миллисекунды каждый. Вызов функции analogWrite() с масштабом 0 – 255 означает, что значение analogWrite(255) будет соответствовать 100% рабочему циклу (постоянное включение 5 В), а значение analogWrite(127) – 50% рабочему циклу. Обратите внимание на то, что ШИМ имеют только пниы: 3, 5, 6, 9, 10, 11.

Широтно-импульсная модуляция ШИМ PWM

Приведу пример изменения яркости светодиода c помощью потенционометра. Подключим светодиод к 9 пину через резистор 220Ом и потенционометр к 0 аналоговому выходу.

схема новая

Теперь осталось только всё запрограммировать. Есть два варианта это сделать. Можно полученные значения с потенционометра разделить на 4 и отправить их на светодиод, или умножить полученные значения с потенционометра на 255, а потом разделить на 1023. Второй способ будет более точным. Вот сам программный код:

#define LedPin 9
#define PotPin 0

void setup() {
    pinMode (LedPin, OUTPUT);

void loop() {
    int PotVal = analogRead(Pot_Pin);
    analogWrite(LedPin, (PotVal*255/1023));
    delay(20);
}


Сдвиговый регистр 74HC595

Понедельник, 04 июля 2016 12:17

Подключение сдвигового регистра, или как увеличить количество пинов на Arduino.

Рано или поздно, когда мы будем создавать новый проект, у нас может не хватить пинов на Arduino. Что же делать в этом случае? Неужели придется покупать еще один микроконтроллер, думать о синхронизации двух устройств? Конечно нет. Существует решение проблемы недостатка выводов — выходной сдвиговый регистр, например, микросхема 74HC595.

74HC595 — восьмиразрядный сдвиговый регистр с последовательным вводом, последовательным или параллельным выводом информации, с триггером-защелкой и тремя состояниями на выходе.

микросхема

Другими словами этот регистр позволяет контролировать 8 выходов, используя всего несколько выходов на самом контроллере. При этом несколько таких регистров можно объединять последовательно для увеличения количества пинов, но не занимая новых пинов Arduino.

К минусам использования сдвигового регистра стоит отнести невозможность использования широтно-импульсной модуляции (ШИМ), потому что выходы регистра могут иметь только логические значения HIGH (1) и LOW (0).

Распиновка входов/выходов регистра

 распиновка микросхемы

№ Пина Обозначение Функция
1-7, 15 Q1-Q7, Q0 Цифровые выводы регистра
8 GND Земля
9 Q7′ Выход для подключения регистров каскадом
10 MR Сброс значений регистра (при подаче сигнала LOW)
11 SH_CP Вход тактовых импульсов
12 ST_CP Синхронизация выходов
13 OE Переключение выходов из высокоомного состояния в рабочий режим (при подаче сигнала LOW) и обратно (при подаче сигнала HIGH)
14 DS Вход последовательных данных
16 Vcc Питание +5V

В исходном состоянии выводы регистра находятся в высокоомном состоянии. Это значит, что другие элементы могут изменять напряжение на них, не влияя на работоспособность и логику микросхемы. Это может быть полезно, если одними и теми же элементами планируется управлять при помощи разных регистров — когда активен один (сигнал LOW на входе OE), следует перевести второй в высокоомное состояние (сигнал HIGH на входе OE). Если регистр всего один, можно смело подключать OE к земле. Также к земле подключается выход GND.

Для нормального функционирования регистра при подключении также следует подключить вход MR к рельсе питания. Туда же подключаем Vcc.

схема подключения

Пины 1-7 соединены с анодами (длинными ножками) светодиодов (зеленые провода), начиная со 2-го светодиода

Пин 8 соединен с землей (синий провод)

Пин 9 ни с чем не соединен

Пин 10 соединен с +5 V (красный провод)

Пин 11 соединен с 4-м пином Arduino (черный провод)

Пин 12 соединен с 3-м пином Arduino (еще один черный провод). Также пин 12 соединен с землей через конденсатор 0.1 мкФ (желтый провод)

Пин 13 соединен с землей (синий провод)

Пин 14 соединен с 2-м пином Arduino (черный провод)

Пин 15 соединен с анодом (длинная ножка) первого светодиода (зеленый провод)

Пин 16 соединен +5 V (красный провод)

Программный код

В качестве примера будем управлять восемью светодиодами. Проверьте правильность подключения элементов и загрузите в Arduino следующий скетч:

 //Пин SH_CP
int SH_CP = 4;
//Пин ST_CP
int ST_CP = 3;
//Пин DS
int DS = 2;

void setup() {
    // Настраиваем выходы SH_CP, ST_CP, DS
    pinMode(SH_CP, OUTPUT);
    pinMode(ST_CP, OUTPUT);
    pinMode(DS, OUTPUT);
}

void loop() {
    for (int i = 0; i < 256; i++) {
        // Инициализируем начало приема данных
        digitalWrite(ST_CP, LOW);
        // Последовательная передача данных на пин DS
        shiftOut(DS, SH_CP, MSBFIRST, i);
        // Инициализируем окончание передачи данных.
        // Регистр подаст напряжение на указанные выходы
        digitalWrite(ST_CP, HIGH);
        // Задержка 0.5 секунды
        delay(500);
    }
}

Рассмотрим пример подробнее. Вас должна заинтересовать функция shiftOut — именно она управляет передачей данных в регистр. У этой функции всего четыре параметра. Первые два — пин, по которому передаются данные (подключенный ко входу DS) и пин тактовых импульсов (подключенный ко входу SH_CP). Третий параметр определяет параметр передачи битов в регистр: MSBFIRST — прямой порядок, начиная со старшего (первого) бита; MSBLAST — обратный порядок, начиная с младшего (последнего бита). И, наконец, четвертый параметр — непосредственно значение, которое должно быть передано в регистр. В данном случае мы передаем значение от 0 до 255 (2 в степени 8 — вы же не забыли что регистр 8-ми битный?). С практической точки зрения, когда нужно активировать определенные выходы, можно использовать битовые представления чисел, например:

// Загорится первый светодиод
shiftOut(DS, SH_CP, MSBFIRST, 0b10000000);
// Загорятся 2, 4, 6, 8 светодиоды
shiftOut(DS, SH_CP, MSBFIRST, 0b01010101);
// Загорится первый светодиод - порядок передачи битов обратный
shiftOut(DS, SH_CP, MSBLAST, 0b00000001);

Итак, нам удалось разобраться с одним сдвиговым регистром. Добавим ещё второй сдвиговый регистр — вот новая схема подключения. Обратите внимание, что изменений не так много — просто два регистра соединены между собой по пинам Q7′ — DS. Второй конденсатор подключать не нужно.

схема подключения 2

Подключение первого регистра не изменилось, за исключением того, что пин 9 соединен с пином 14 второго регистра (оранжевый провод). Подключение второго регистра полностью идентично подключению первого регистра (за исключением отсутствия конденсатора и уже упомянутого пина 14).

Загрузим скетч для последовательного зажигания всех 16 светодиодов:

 //Пин SH_CP
int SH_CP = 4;
//Пин ST_CP
int ST_CP = 3;
//Пин DS
int DS = 2;

void setup() {
    // Настраиваем выходы SH_CP, ST_CP, DS
    pinMode(SH_CP, OUTPUT);
    pinMode(ST_CP, OUTPUT);
    pinMode(DS, OUTPUT);
}

void loop() {
    // Цикл обхода 16 светодиодов
    for (int i = 0; i < 16; i++) {

        // Запись в регистр

        registerWrite(i, HIGH);

        // Задержка 0.5 с.

        delay(500);

        // Отключение предыдущего светодиода

        if (i > 0) {
            registerWrite(i - 1, LOW);
        }
        // Отключение последнего светодиода
        // ("предыдущий" для первого"
        else {
            registerWrite(15, LOW);
        }
    }
}

// Метод для отсылки данных в регистры
void registerWrite(int num, int state) {
    // Для хранения 16 битов используется unsigned int
    unsigned int bitsToSend = 0;
    // 0b000000000000000
    // Инициализируем начало приема данных
    digitalWrite(ST_CP, LOW);

    // Устанавливаем 1 в соответствующий бит
    bitWrite(bitsToSend, num, state);

    // 16 бит необходимо разделить на два байта:
    // И записать каждый байт в соответствующий регистр
    byte register1 = highByte(bitsToSend);
    byte register2 = lowByte(bitsToSend);

    // Последовательная передача данных на пин DS
    shiftOut(DS, SH_CP, MSBFIRST, register2);
    shiftOut(DS, SH_CP, MSBFIRST, register1);

    // Инициализируем окончание передачи данных.
    // Регистры подадут напряжение на указанные выходы
    digitalWrite(ST_CP, HIGH);
}

Обратите внимание на функции, которые сильно облегчат работу со сдвиговыми регистрами: bitWrite пишет указанный бит в заданную позицию числа, а highByte и lowByte берут соответственно старший (левые 8 бит) и младший (правые 8 бит) байты из переданного числа.

Итак, у нас получилось подключить 16 светодиодов, используя всего 3 пина Arduino.


Соревновательная робототехника

Вторник, 08 марта 2016 23:19

В ходе обучения предполагается активная подготовка к успешному участию в мероприятиях WRO, РобоФест, РобоФинист, ИКАРенок, ИКАР для учащихся, занимающихся робототехникой. Школьники и студенты, начинающие изучение данного направления, познакомятся с образовательной робототехникой, организацией проектной и исследовательской работы, использованием робототехнических конструкторов, а так же созданием собственных конструкторских проектов. Большое внимание будет уделяться практической работе с конструкторами и комплектующими на основе Arduino.


Юный программист - 4

Четверг, 30 июля 2015 19:59
В нашем центре открывается очередной набор в социальный проект "Юный Программист - 4" для учащихся 2-10 классов. Проект будет проходить с 24 августа  по 29 августа 2015 года. 

Турнир Юных Программистов 3

Вторник, 09 июня 2015 01:12

Завершился турнир юных программистов 3! Теперь дети продолжат дальнейшее обучение по программированию роботов!


Лучший программист 2015

Понедельник, 01 июня 2015 01:04

Завершился очередной проект нашего центра Лучший программист 2015! Лучший юный программист получил в подарок личного робота!


Летний Технокласс 2015

Понедельник, 27 апреля 2015 23:57

Для многих становится актуальным вопрос «Чем занять ребенка летом?» Учебный центр Толтек Плюс предлагает Вам отличное решение - летний ТехноКласс. ТехноКласс – это то, место, где Ваш ребенок найдет занятие по душе! 


Страница 1 из 2

Новости о нас

КАЖДУЮ ПЯТНИЦУ - бесплатное занятие по 3D-моделированию с 16:40 до 18:10. Только для учащихся нашего технопарка! Подробнее
 Региональный отборочный фестиваль "Робофест-Стерлитамак 2018" состоится 25-26 января в г.... Подробнее
В сезоне 2017/18 фестиваля «РобоФест Стерлитамак 2018» Региональный учебно-тренировочный сбор... Подробнее
ВНИМАНИЕ учащимся! Объявляем конкурс рисунков на тему "Робот моей мечты", который пройдет по двум... Подробнее
В нашем технопарке Толтек СФ БашГУ пройдут открытые ОТБОРОЧНЫЕ СОРЕВНОВАНИЯ для ВСЕХ возрастов и... Подробнее

Наши партнеры

 TZOyoOCZ8y0 logotip novy SF BashGU  utv logo  CityMoll  VolnoeDelo