Циљ вежбе:
Научити како се управља колекторским мотором
Задаци вежбе:
1. Повезивање шеме
2. Писање програма
Инструменти које ћемо користити у вежби:
1. Контролер
2. Макетна платформа
3. отпорник од 10 кило ома
4. Дугме
5. Транзистор
6. Исправљачка диода
7. Колекторски мотор
8. Каблови
Израда вежбе:

1. Повезивање шеме

Шему треба повезати на следећи начин:
1. Прикључите мотор, диоду и транзистор
2. Повежите трећи пин са мотором
3. Додајте два дугмета и ка њима привежите два кабла који сједињују контакте са напоном, на друга два контакта повежите отпорнике
4. Повежите дугмиће са пиновима 4 и 5
5. Изведите напон и земљу са микроконтролера

Детаљнији опис можете наћи овде:



2. Писање програма

Код програма:
const int motor = 3; //Објављивање трећег пина који одговара мотору
const int button1 = 4; //Пин 4 одговара првом дугмету (смањење брзине)
const int button2 = 5; //Пин 5 за друго дугме (увећање брзине)
boolean lastButton1 = LOW; //место где се чува последња вредност забележена са дугмета 1
boolean lastButton2 = LOW; //место где се чува последња вредност забележена са дугмета 2
int speedMotor = 0; //Брзина мотора
void setup()
   {
       pinMode(motor, OUTPUT); //Мотор се дефинише као OUTPUT
       pinMode(button1, INPUT); //Дугмад се дефинишу као INPUT
       pinMode(button2, INPUT); 
   }
void loop()
   {        
       //Стабилизировање вредности са дугмета 1 програмским путем у функциј stable() (то се ради да не би дошло до пометње код контаката дугмета) 
       boolean stableButton1 = stable(lastButton1, button1); 
       //Стабилизировање вредности са дугмета 2
       boolean stableButton2 = stable(lastButton2, button2);
       //Укључивање дугмета 1
       if (stableButton1 == HIGH && lastButton1 == LOW)
          {
              speedMotor = speedMotor – 65; //Умењивање брзине  
          }
       //Укључивање дугмета 2
       if (stableButton2 == HIGH && lastButton2 == LOW) 
          {
              speedMotor = speedMotor + 65; //Повећавање брзине
          }
       //Ограничавање брзине тако да би она била у границама од 0 до 255
       if (speedMotor < 0 ) speedMotor = 0;
       else if (speedMotor > 255) speedMotor = 255;
       //Предавање вредности на мотор
       analogWrite(motor, speedMotor);
       //Установа вредности дугмића
       lastButton1 = stableButton1;
       lastButton2 = stableButton2;
   }
//Функција стабилизовања дугмета
boolean stable(boolean valueIn, int button) //Функција има два параметра
   { 
       boolean valueButton = digitalRead(button); //Прочитати вредност дугмета
       //Ако се то што је ушло у функцију разликује од онога што је прочитано 
       if (valueIn != valueButton)
          {  
             delay(5); //Пауза од 5 милисекунди
             valueButton = digitalRead(button);  //Поновно читање вредности
          }
       return valueButton; //Враћање вредности, вредност излази из функције
   }
 

Питање: Колико има брзина мотор у нашој вежби?