italian agile day 2011 - corso di cucina fusion elettro-agile con arduino
DESCRIPTION
Prendete una Arduino board, alcune linee di codice, una cucchiaiata di breadboard. Spolverate con dei componenti passivi. Saldate a 200° con buono stagno. Versate in una pentola e mescolate il tutto con metodo Agile. Lasciate raffreddare per pochi secondi. Servite il vostro prototipo elettronico e lasciate di stucco i vostri clienti! Ecco la ricetta per creare rapidamente prototipi elettronici su cui sviluppare i vostri prodotti di successo. Lo sviluppo Agile si puo’ applicare anche all’elettronica senza essere grandi esperti di circuiti. Durante il workshop spiegheremo come costruire un prototipo per dimostrare il nostro approccio in un contesto diverso dal software.TRANSCRIPT
Corso di cucina fusion elettro-agile con Arduino
Roma - 19 novembre 2011 Italian agile day–Paolo Aliverti
1. La spesa
TInkerIngVerb: attempt to repair or improve something in a casual or desultory way, often to no useful effect.
Riparare
Migliorare
Nuovi oggetti
Physical ComputingBuilding interactive physical systems by the use of software and hardware that can sense and respond to the analog world
esplorare
Arte
Scienza
Modelli mentali
Elettronica
Acqua!
Prototipi elettronici
2. cucinare
Spelare fili
Ingredienti
+ -
LED
Buttons
Resistori
Strisce colorate
Breadboard
Breadboard
Breadboard
Un microcontrollore
Una community
Tool di sviluppo
CosaManca?
Il software!
La ricetta - Sketch
Struttura dello Sketch
setup
loop
Step 1 – Simplest Timer
+ -
LED
al pin 13 al pin GND
Sketch
void setup() { pinMode(13, OUTPUT); digitalWrite(13, LOW); delay(5000);
}
pinMode(13, ); INPUT
OUTPUT
pinMode(13, OUTPUT);
void setup() { pinMode(13, OUTPUT); digitalWrite(13, LOW); delay(5000);
}
digitalWrite(13, ); HIGH
LOW
digitalWrite(13, HIGH);
digitalWrite(13, LOW);
void setup() { pinMode(13, OUTPUT); digitalWrite(13, LOW); delay(5000);
}
5000 ms = 5s
void loop() { digitalWrite(13, HIGH);
}
Verify
Upload
Restart? RESET!
Step 2 – usable Timer
Sketch
void setup() { pinMode(13, OUTPUT);
pinMode(7, INPUT); }
pinMode(7, INPUT);
void loop() { val = digitalRead(7);
if (val == HIGH) { digitalWrite(13, HIGH); delay(5000); } else { digitalWrite(13, LOW); }}
Step 3 – variable Timer
trimmer
Sketch
void loop() {
t0 = analogRead(A0); …
delay(t0);
}
Step 4 – alarm Timer
PWM – Pulse Width Modulation
analogWrite(9, [0:255]);
PWM pins (~)
tone(pin, freq, len);
3. Il Pranzo
4iterations
5steps
Ideazione
Preparazione
Verifica
Deploy
Evoluzione
è una novità?
Prototipi stabili
Saldare
Prototipi più stabili
Wiring
Circuiti Stampati
Sw+
hw
hw
SW
HW
Poetics of the unseen
Sunil Vallu
Poetics of the unseen
Sunil Vallu
4. le cucine
C
void setup() { pinMode(13, OUTPUT); }
void loop() { digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW); delay(1000); }
Blinking LED
#include <avr/io.h>#include <util/delay.h>
int main(void){ DDRB = _BV(PB0); for(;;){ PORTB = _BV(PB0); _delay_ms(1000); PORTB = 0; _delay_ms(1000); } return 0;}
Cosa perdo?
Cosa guadagno?
IDE
SIMULATORE
DEBUG
(Gdb)
Unit test
http://www.nongnu.org/avr-libc/
Arduino Programmatore
AB Normal?
Dasa cable
5. buon appetito!
@zeppelinmaker
http://zmaker.wordpress.com
Paolo Aliverti
DOMANDE?