Skip to content
  • P
    Projects
  • G
    Groups
  • S
    Snippets
  • Help

dmpada / eriala-2024

  • This project
    • Loading...
  • Sign in
Go to a project
  • Project
  • Repository
  • Issues 0
  • Merge Requests 0
  • Pipelines
  • Wiki
  • Snippets
  • Members
  • Activity
  • Graph
  • Charts
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • Files
  • Commits
  • Branches
  • Tags
  • Contributors
  • Graph
  • Compare
  • Charts
Switch branch/tag
  • eriala-2024
  • lab5
  • lab5_starter
  • lab5_starter.ino
Find file
BlameHistoryPermalink
  • Risto Heinsar's avatar
    Added lab 5 starter code · 23823f64
    Risto Heinsar committed 7 months ago
    23823f64
lab5_starter.ino 2.26 KB
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
/* IRRemote teek vajab dekodeerimise makrot enne teegi lisamist */
#define DECODE_SAMSUNG

#include <IRremote.hpp>
#include <Servo.h>

#define BUTTON_PIN              2

#define SONIC_ECHO_PIN          3
#define SONIC_TRIG_PIN          4

#define RIGHT_SERVO_PIN         5
#define LEFT_SERVO_PIN          6

#define LEFT_LED_PIN            7
#define RIGHT_LED_PIN           8

#define SERVO_MIN_PULSE      1300
#define SERVO_MAX_PULSE      1700
#define SERVO_STANDSTILL     1500

Servo leftWheel;
Servo rightWheel;

bool robotEnabled = true;

void setup()
{
  Serial.begin(9600);

  /* Konfigureerime servomootorid */
  leftWheel.attach(LEFT_SERVO_PIN, SERVO_MIN_PULSE, SERVO_MAX_PULSE);
  rightWheel.attach(RIGHT_SERVO_PIN, SERVO_MIN_PULSE, SERVO_MAX_PULSE);
   
  SetWheels(SERVO_STANDSTILL, SERVO_STANDSTILL);
}

void loop()
{
  /* Kui robot on väljas, siis IR vastuvõttu ei lähe */
  if (!robotEnabled)
  {
    return;
  }

  ReceiveIr();
}

void ReceiveIr(void)
{
  if (IrReceiver.decode()) 
  {
    if (IrReceiver.decodedIRData.protocol == SAMSUNG) 
    {
      IrReceiver.printIRResultShort(&Serial);

      /* Edastame käsukoodi funktsiooni, mis selle lahendab */
      ProcessCommand(IrReceiver.decodedIRData.command);
    }

    /* Jätkame IR vastuvõttu alles pärast käsu täitmist, vähendab korduste lugemist */
    IrReceiver.resume();
  }
}

void ProcessCommand(uint16_t cmd)
{
  /* Tuvastame puldilt vastuvõetud käsukoodi */
  switch (cmd)
  {
    case /* Asenda käsukoodiga puldilt */:
      /* Tegevused vastava käsu jaoks */
    default:
      break;
  }
}

void MoveBack(uint16_t duration)
{
  SetWheels(1400, 1600);
  delay(duration);
}

void MoveForward(uint16_t duration)
{
  SetWheels(1600, 1400);
  delay(duration);
}

void SetWheels(int leftWheelImpulseLength, int rightWheelImpulseLength)
{
  leftWheel.writeMicroseconds(leftWheelImpulseLength);
  rightWheel.writeMicroseconds(rightWheelImpulseLength);
}

float GetDistInCm() 
{
  /* Saadame ultrahelilaine välja, kestvus 10 us */
  digitalWrite(SONIC_TRIG_PIN, HIGH);   
  delayMicroseconds(10);                
  digitalWrite(SONIC_TRIG_PIN, LOW);    

  /* Loeme signaali peegeldumise aja */
  uint16_t echoTime = pulseIn(SONIC_ECHO_PIN, HIGH);
  
  /* Tagastame aja teisendatud kauguseks */
  return (echoTime / 58.0); 
}