110 likes | 268 Views
CSC-2700 – (3) Introduction to Robotics. Robotics Research Laboratory Louisiana State University. What is a Robot?. What is the definition of a robot for computer scientist? Explain why a common toaster is not a robot
E N D
CSC-2700 – (3) Introduction to Robotics Robotics Research Laboratory Louisiana State University
What is a Robot? • What is the definition of a robot for computer scientist? • Explain why a common toaster is not a robot • In what way the reasons for this are similar to those for a simple light-switch not being a robot?
AVR-C : variable types • uint8_t : 1 Byte 0 ~ 255 ( = 28 - 1) • uint16_t : 2 Bytes 0 ~ 65535 ( = 216 – 1) • uint32_t : 4 Bytes 0 ~ 232 - 1 • char : 1 Byte • int : 2 Byte -32768 ~ 32767 (-215 ~ 215 - 1) • double : 4 Bytes • float : 4 Bytes • * : pointer-indicator • int[], int[][], … : Arrays; similarly for char, double, etc.
AVR-C : condition/Loop • if ( … ) { … } if ( … ) { … } else { … } • switch ( … ) { case 0: … ; break; case 1: … ; break; … case 7: …; break; } • for ( … ; … ; … ) { … } • while ( … ) { … } • do { … } while ( … )
AVR-C : basic structure • #include <avr/io.h> a library provided by avrc-compiler • #include “yourLibrary.h” your library • void yourFuction(void); Declare prototype functions first • int main(){ main of the program • InitHardware(); initialize hardware • while (1) { One main while loop • yourFunction(); call the declared function • } • } • void yourFuction(){ … } functions
LED & LED matrix What happen in LED with below connection? - + What happen in LED with below connection? • LED (Light Emitting Diode) • 3x3 LED matrix - + What happen in LED with below connection? - + + + LED ON What combination of outputs on cols/rows can make only led5 ON? COL1 COL2 COL3 OFF ON OFF ROW1 ON 2 1 3 ROW2 OFF 5 4 6 8 7 9 ROW3 ON
PORT control • PORT: collection of 8 pins for communication between microprocessor and other devices • PORT control register • PINx : to read the values of the pins in PORTx, • pins: 7 6 5 4 3 2 1 0 0 0 1 1 0 0 0 1 if (PINx == 0x31) ... • PORTx : to assign values to the pins in PORTx, PORTx = 0x31 00110001 PINx = 0x31 is meaningless • DDRx : Controls the Input/Output specification of pins in PORTx (0 intput , 1 output)
PORT control PIN 0 ~ 3 : Output (LED), PIN 4 ~ 7 : Input (Button) 0 0 0 0 1 1 1 1 DDRA: 0x0F in in in in out outoutout PORTA: 0xF6 1 1 1 1 0 1 1 0 6 7 5 4 3 2 1 0 0 0 1 1 0 1 1 0 PINA : 0x36 (48) - + + - - + + - Button2 Button4 LED3 LED1 LED4 LED2 Button3 Button1 GND
PWM Control ICR3 = 40000u; // input capture register TCNT3 = 0; // interrupt flag register // Set the WGM mode & prescalar TCCR3A = ( 1 << WGM31 ) | ( 0 << WGM30 ) | // timer control register ( 1 << COM3A1 ) | ( 1 << COM3B1 ) | ( 1 << COM3C1 ); TCCR3B = ( 1 << WGM33 ) | ( 1 << WGM32 ) | // timer control register TIMER3_CLOCK_SEL_DIV_8; DDRE |= (( 1 << 3 ) | ( 1 << 4 ) | ( 1 << 5 )); // I/O control register uint16_t count = 0; while (1){ OCR3A = count++; // 0 ~ 65535 (pulse width), PINE3 us_spin(200); }
MOSFET based H-bridge DC-Motor controller #define MOTOR_IN1_PIN 0 #define MOTOR_IN1_MASK (1 << MOTOR_IN1_PIN) #define MOTOR_IN1_DDR DDRF #define MOTOR_IN1_PORT PORTF #define MOTOR_IN2_PIN 1 #define MOTOR_IN2_MASK (1 << MOTOR_IN2_PIN) #define MOTOR_IN2_DDRDDRF #define MOTOR_IN2_PORTPORTF #define MOTOR_STANBY_PIN 1 #define MOTOR_STANBY_MASK (1 << MOTOR_STANBY_PIN) #define MOTOR_STANBY_DDR DDRF #define MOTOR_STANBY_PORT PORTF #define MOTOR_PWM OCR3A • pwm_init(); PWM initialization • DDRF = 0xFF all pins in PORTF are outputs • PORTF = 0x00 pull down for all outputs • MOTOR_PWM = 10000; pwm signal is 10000 • MOTOR_STANBY_PORT |= MOTOR_STANBY_MASK; STBY : high • MOTOR_STANBY_PORT |= (MOTOR_IN1_MASK | MOTOR_IN1_MASK ); • IN1 : high, IN2 : high (Short brake) • MOTOR_STANBY_PORT &= ~ (MOTOR_IN1_MASK | MOTOR_IN1_MASK ); • IN1 : low, IN2 : low (Short brake) • MOTOR_STANBY_PORT |= MOTOR_IN1_MASK; • MOTOR_STANBY_PORT &= ~MOTOR_IN1_MASK; • IN1 : high, IN2 : low (CCW) • MOTOR_STANBY_PORT &= ~MOTOR_IN1_MASK; • MOTOR_STANBY_PORT |= MOTOR_IN1_MASK; • IN1 : low, IN2 : high (CW)