1 / 11

CSC-2700 – (3) Introduction to Robotics

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

kami
Télécharger la présentation

CSC-2700 – (3) Introduction to Robotics

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CSC-2700 – (3) Introduction to Robotics Robotics Research Laboratory Louisiana State University

  2. 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?

  3. 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.

  4. AVR-C : condition/Loop • if ( … ) { … } if ( … ) { … } else { … } • switch ( … ) { case 0: … ; break; case 1: … ; break; … case 7: …; break; } • for ( … ; … ; … ) { … } • while ( … ) { … } • do { … } while ( … )

  5. 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

  6. 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

  7. 0x6C 0b0110 1100 108

  8. 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)

  9. 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

  10. 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); }

  11. 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)

More Related