Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчётный лист.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
172.03 Кб
Скачать

Void loop() {

while (s <= 15) {

// считываем показание кнопки

boolean reading = digitalRead(buttonPin);

// если состояние кнопки изменилось,

// ждём 100 мс и проверяем ещё раз

if (reading != lastButtonState) {

// ждём

delay(5);

// снова считываем показание кнопки

reading = digitalRead(buttonPin);

// если текущее состояние снова не

// равно предыдущему, значит это не шум

if(reading != lastButtonState){

// запоминаем новое состояние кнопки

// для последующего прогона loop

lastButtonState = reading;

}

}

// Пробегаем все цифры от 0 до 9 и выводим их

// После каждой ждём одну секунду

if (reading) {

state = !state;

}

showDigit(s);

if (state == HIGH) {

s++;

}

if (s == 15) {

s = 0;

}

delay(200);

}

}

На 9 занятии требовалось вывести данные о подгруппе используя ЖК дисплей.

Дисплей

#include <LiquidCrystal.h>

int val = 0;

int backlight = 3;

int pPin = A2;

int i = 0;

LiquidCrystal lcd(4, 6, 10, 11, 12, 13);

Void setup()

{

pinMode(backlight, OUTPUT);

digitalWrite(backlight, HIGH);

lcd.begin(16, 2);

}

Void loop()

{

val=analogRead(pPin);

lcd.print("\x42\xbb""a\xe3");

lcd.setCursor(val, 1);

lcd.print("\x12""a\vg3""a ""3pr6"" ");

delay(100);

lcd.setCursor(val, 0);

lcd.print(" ");

lcd.setCursor(val, 1);

lcd.print(" ");

}

На 10 занятии требовалось, научиться управлять сервоприводом при помощи потенциометра и при помощи кнопки.

Потенциометр

// Подключаем библиотеку Servo.h

// для работы с серводвигателями

#include <Servo.h>

// Создаём объект класса Servo

// из библиотеки Servo.h

Servo myservo;

int potPin = A2; // Аналоговый пин с потенциометром

// Вспомогательная переменная с

// текущим углом

int val = 0;

Void setup()

{

// Обозначаем, что серводвигатель

// подсоединён к 9-му пину

myservo.attach(9);

}

Void loop()

{

val = analogRead(potPin);

// Т.к. значение аналогового сигнала варьируется

// от 0 до 1023, а ШИМ-сигнала - от 0 до 255,

// поделим полученное значение на 4

myservo.write(val/5.6);

delay(10);

}

Кнопка

// Подключаем библиотеку Servo.h

// для работы с серводвигателями

#include <Servo.h>

// Создаём объект класса Servo

// из библиотеки Servo.h

Servo myservo;

// Вспомогательная переменная с

// текущим углом

int pos = 0;

int buttonPin = 2; // пин с кнопкой

boolean lastButtonState = HIGH;

Void setup()

{

// Обозначаем, что серводвигатель

// подсоединён к 9-му пину

myservo.attach(9);

}

Void loop()

{

// считываем показание кнопки

boolean reading = digitalRead(buttonPin);

// если состояние кнопки изменилось,

// ждём 100 мс и проверяем ещё раз

if (reading!= lastButtonState) {

// Пробегаем все значения от 0 до 180 градусов

// по одному градусу на каждом шаге

pos += 10;

// Даём команду серво повернуться на

// заданный угол

myservo.write(pos);

// Ждём 15 мс, пока серво повернётся на 1°.

// Время поворота зависит от модели сервы,

// 15 мс — просто подобранная величина

delay(50);

// снова считываем показание кнопки

reading=digitalRead(buttonPin);

// если текущее состояние снова не

// равно предыдущему, значит это не шум

if(reading != lastButtonState){

// запоминаем новое состояние кнопки

// для последующего прогона loop

lastButtonState = reading;

}

}

if (reading) {

lastButtonState = !lastButtonState;

delay(50);

}

if (pos == 180) {

pos =0 ;

}

delay(50);

}

На 11 занятии требовалось научиться управлять двигателем, при помощи кнопки.

Двигатель

int motorPin = 12; // Пин с транзистором

void setup()

{

// Инициализируем пин, к которому подключён

// транзистор, как работающий на вывод

pinMode(motorPin, OUTPUT);

}

void loop()

{

// Закрываем «кран» на 2 секунды

digitalWrite(motorPin, LOW);

delay(2000);

// Открываем «кран» на 2 секунды

digitalWrite(motorPin, HIGH);

delay(2000);

Двигатель на кнопку

int motorPin = 12; // Пин с транзистором

int buttonPin = 2; // пин с кнопкой

boolean lastButtonState = HIGH;

void setup()

{

// Инициализируем пин, к которому подключён

// транзистор, как работающий на вывод

pinMode(motorPin, OUTPUT);

}

void loop()

{

// считываем показание кнопки

boolean reading = digitalRead(buttonPin);

// если состояние кнопки изменилось,

// ждём 100 мс и проверяем ещё раз

if (reading !=lastButtonState) {

// Считываем значение потенциометра

// и делим его на 4, т.к. значение analogRead

// варьируется от 0 до 1023, а значение

// снова считываем показание кнопки

reading=digitalRead(buttonPin);

delay(0.5);

// если текущее состояние снова не

// равно предыдущему, значит это не шум

if(reading &&! lastButtonState){

delay(0.5);

lastButtonState = reading;

}

}

if (reading) {

lastButtonState = !lastButtonState;

int val = analogRead(buttonPin) ;

analogWrite(motorPin, val);

}}

И на 12 занятии требовалось сьбрать и запрограммировать робота, что бы он ездил по черной линии.

Код

int leftLinePin = 10;

int rightLinePin = 11;

int leftDirPin = 4;

int leftSpeedPin = 5;

int rightDirPin = 7;

int rightSpeedPin = 6;

int runSpeed = 50;

void setupMotorShield()

{

pinMode(leftDirPin, OUTPUT);

pinMode(leftSpeedPin, OUTPUT);

pinMode(rightDirPin, OUTPUT);

pinMode(rightSpeedPin, OUTPUT);

}

void go()

{

analogWrite(leftSpeedPin, runSpeed);

analogWrite(rightSpeedPin, runSpeed);

}

void stop()

{

analogWrite(leftSpeedPin, 0);

analogWrite(rightSpeedPin, 0);

}

void goForward()

{

digitalWrite(leftDirPin, HIGH);

digitalWrite(rightDirPin, HIGH);

go();

}

void turnLeft()

{

digitalWrite(leftDirPin, LOW);

digitalWrite(rightDirPin, HIGH);

go();

}

void turnRight()

{

digitalWrite(leftDirPin, HIGH);

digitalWrite(rightDirPin, LOW);

go();

}