Arduino Robotics workshop day2

Post on 30-May-2015

1,875 views 8 download

Tags:

description

Slides from my Arduino robotic workshop http://hardwarefun.com/arduino-workshop

transcript

Arduino Robotics Workshop

Day 2Sudar Muthu (@sudarmuthu)

http://hardwarefun.com/arduino-workshophttp://github.com/sudar

2

Basics of Robotics Using Breadboard Digital and Analog I/P and O/P Serial Communication Controlling DC Motors Assembled the robot Made it run

What we have seen so far?

http://hardwarefun.com

http://hardwarefun.com 3

Varying the speed of the motor Play some tunes using the buzzer How IR works Making use of IR to find obstacles Make the bot avoid strangers Making it autonomous Some Advanced stuff

Today we will see..

http://hardwarefun.com 4

Varying the speed of the motor using PWM

http://hardwarefun.com 5

Playing tones in the buzzer

http://hardwarefun.com 6

We can generate a square wave at specified frequency using tone() function

Usage:

tone(pin, frequency, duration)

Playing sound

Teaching robot to avoid strangers

Two IR LED’s. One receiver, one transmitter Both face the same direction Keep transmitting IR waves If receiver receives waves, then there is a

obstacle Otherwise keep moving

http://hardwarefun.com 8

Let’s see some code

http://hardwarefun.com 9

Let’s get some food

http://hardwarefun.com 10

What are the limitations that we have faced so far?

http://hardwarefun.com 11

Using Delay

http://hardwarefun.com 12

Your microcontroller is going to sleep You can’t read or write while in delay Eg: You can’t detect an obstacle when the

bot is making a turn

Issues with delay

http://hardwarefun.com 13

How to fix it?

http://hardwarefun.com 14

Using Timer libraryhttps://github.com/JChristensen/Timer

http://hardwarefun.com 15

If we don’t read the pin, then we miss the value

http://hardwarefun.com 16

every(long period, callback); after(long duration, callback); oscillate(int pin, long period, int

startingValue); pulse(int pin, long period, int startingValue); update();

Methods in Timer library

http://hardwarefun.com 17

Interrupts

http://hardwarefun.com 18

Pin 2 and 3 Supports LOW, CHANGE, RISING, FALLING No software support is needed Can be removed as well

Hardware support

http://hardwarefun.com 19

Let’s see some code

http://hardwarefun.com 20

What if we need it on other pins?

http://hardwarefun.com 21

Software Interruptshttp://code.google.com/p/arduino-pinchangeint/

http://hardwarefun.com 22

Can be used on any pin

http://hardwarefun.com 23

Let’s see some code

http://hardwarefun.com 24

Making your robot follow a line Making your robot stay in a table Replace IR with ultrasound sensor Control the bot remotely using RF

Some ideas to try

http://hardwarefun.com 25

Controlled it using Android phone Controlled it using JavaScript and

WebSockets Controlled it using Bluetooth Controlled it using RF Added a missile launcher to it

https://github.com/sudar

Things I have tried

Links

Arduino – http://arduino.ccAsimi – A simple bot using Arduino

http://hardwarefun.com/project/asimiGetting started with hardware programming

http://hardwarefun.com/tutorials/getting-started-with-hardware-programming

Getting started with Arduino http://hardwarefun.com/tutorials/getting-started-with-arduino-and-avr

Questions

Thank You

Sudar Muthu (@sudarmuthu)http://hardwarefun.com/arduino-workshop

https://github.com/sudar/arduino-robotics-workshop