Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Robotics Research Laboratory Louisiana State University Analog to Digital (ADC, A/D or A to D) ◦ Converting an analog voltage to a digital value that can be used by a microcontroller. ◦ There are many sources of analog signals to be measured such as light intensity, temperature, distance, position, etc. ATMega128 ADC has 10 bits resolution (0~1024) ◦ Has 8 channels through a multiplexer ◦ 8 pins on PORTF ◦ Need to set PORTF as input without pull-up ◦ Has own power supply (labeled AVCC) ◦ Allows measuring voltages from 0 to 5 volts with a resolution of 5/1024 volts, or 4.88 mV 5V + S1 = 0 ~ 20000 Ω Connect to ADC 5V - 0V drop = Xi mA x 0 Ω X V drop = Xi mA x S1 Ω R2 = 1000 Ω 0V X v+ restV drop = Xi mA x 1000Ω Resistance value of S1(IR sensor) can be changed by sensing uint16_t a2d_10( uint8_t Channel ){ // Select the channel in a manner which leaves REFS0 and REFS1 un touched. ADMUX = ( ADMUX & (( 1 << REFS1 ) | ( 1 << REFS0 ))) | Channel; // Start the conversion ADCSR = ADCSR | ( 1 << ADSC ); // Wait for it to complete while ( ADCSR & ( 1 << ADSC )); return ADC; // ADC defined at avr/iom128.h ( special function register: SFR_IO16) } // a2d_10 /home/csc2700/csc2700/40-ADC-01 Translates data between parallel and serial forms UARTs are commonly used in conjunction with communication standards ◦ ex) EIA RS-232, RS-422 or RS-485 Character framing ◦ Start bit: logic low ◦ Stop bit : logic high ( 1 or 2 bits) ◦ Parity bit : optional (even or odd) Important Setting for Serial UART : ◦ Baud Speed , Flow control, Port Minimum required connection ◦ RX(yellow),TX(green), and Ground(black) Our programmer has 2 serial port ◦ ttyACM0 : ISP programming port ◦ ttyACM1 : UART serial port Wire connection ◦ PE0 ◦ PE1 ◦ GND Yellow wire Green wire Black wire Open Gtk-term ◦ Set port : ◦ Speed : /dev/ttyACM1 57600 for ttyACM1 9600 for Bluetooth connection Config.h ◦ Set : #define CFG_USE_UART0 1 Hardware.h ◦ Set : #define UART0_BAUD_RATE 57600 ADC_test.c ◦ Add : #include "UART.h” ◦ Create file pointer : FILE *u0; // for UART0 ◦ Open u0 if defined( __AVR_LIBC_VERSION__ ) #else #endif u0 = fdevopen( UART0_PutCharStdio, UART0_GetCharStdio ); u0 = fdevopen( UART0_PutCharStdio, UART0_GetCharStdio, 0 ); ◦ Send values using fprintf(u0,”your message %d”, variable); /home/csc2700/csc2700/40-ADC-02 Check the UART buffer first ◦ int UART0_IsCharAvailable() Read a character from UART buffer ◦ int UART0_GetChar() int counter; char tmpChar; While(1){ if ( UART0_IsCharAvailable() ) { tmpChar = UART0_GetChar(); if ( tmpChar == ‘s'){ }else if ( tmpChar == ‘c'){ }else if ( tmpChar == ‘r’){ } } } // start moving // clear counter // report counter number Make a led0 from UART Make a led0 Make a led1 from UART Make a led1 on when ‘0’ message is received off when button0 is pressed on when ‘1’ message is received off when button1 is pressed Send “!!!good bye!!!” message to UART tx when “bye” message is received from UART rx Make a led0 ON and a motor clockwise spin when ‘4’ message is received from UART Make a led1 ON and a motor anti-clockwise spin when ‘6’ message is received from UART Make a led2 ON and speed of the motor increase when ‘8’ message is received from UART Make a led3 ON and speed of the motor decrease when ‘2’ message is received from UART