El modelo más común es Arduino UNO • Está basado en un microcontrolador AVR Atmel de 8 bits • Maneja pines de I/O digitales y analógicos (PWM) • Alimentación por jack o USB • Se programa mediante USB • Se puede comunicar con sistemas externos mediante protocolo UART TTL a través de USB
incluye todo el proceso de compilación y carga ◦ Alternativa -> pip install ino • Se programa en lenguaje C / C++ • “Batteries included” ◦ Funciones de gestión de los pines, trigonométricas y matemáticas, de temporización e interrupciones y de comunicación ◦ Muchas librerías para manejar HW (LCDs, servos, GSM, WIFI..)
comunicación entre los dos sistemas • Desde el sketch ◦ Se envían datos al sistema externo ◦ Se leen las respuestas en una región del bucle principal • Desde el sistema externo ◦ Comunicación en Python (pySerial) Primera aproximación
adecuada cuando hay ciertos elementos en el flujo del sketch • Librerías de Arduino • Uso del HW del microprocesador (registros, timers, interrupciones) • Partes del código que requieren de una temporización muy exigente
crecer de manera preocupante…. … es señal de que debemos adoptar otra estrategia void loop() { // Check if characters available in the buffer if (Serial.available() > 0) { operation = Serial.read(); delay(wait_for_transmission); // If not delayed, second character is not correctly read mode = Serial.read(); pin_number = Serial.parseInt(); // Waits for an int to be transmitted if (Serial.read()==':'){ value_to_write = Serial.parseInt(); // Collects the value to be written } switch (operation){ case 'R': // Read operation, e.g. RD12, RA4 if (mode == 'D'){ // Digital read digital_read(pin_number); } else if (mode == 'A'){ // Analog read analog_read(pin_number); } else { break; // Unexpected mode
un sistema externo ◦ Llamadas a funciones para gestión de los recursos de Arduino ▪ I/O en pines • El sketch es un bucle de lectura / escritura por el puerto serie ◦ Protocolo bidireccional de comunicación