Sunteți pe pagina 1din 29

ARDUINO

TEORIA DE CONTROL 4to. AO I.S.I.

ESTRUCTURA DEL PROGRAMA


declaracione
s

int out2 = 2;
void setup() {
Serial.begin(9600);
1

setup

pinMode(out2, OUTPUT);
}
void loop()
{
digitalWrite(out2, HIGH);

Lazo de
control

delay(1000);
digitalWrite(out2, LOW);
delay(1000);
}

SALIDA DIGITAL
Permite solo 2 estados
HIGH = 5 V
LOW = 0 V

PARPADEO DE UN LED
Se conecta al PIN 2 un LED a travs de
una resistencia limitadora de 220 Ohms.
La resistencia evita que se queme la
salida del pin digital que soporta 20 mA
como mximo
NUNCA Conectar directamente un
LED a la salida digital, siempre con
una resistencia

PARPADEO DE LED
PIN 2 Y GND(GROUND)

PARPADEO DE UN LED
int out2 = 2; //nombre entrada digital 2 es OUT2
void setup() // setup ejecuta 1
{
Serial.begin(9600);
pinMode(out2, OUTPUT);
}
void loop()
{
digitalWrite(out2, HIGH);
delay(1000);
digitalWrite(out2, LOW);
delay(1000);
}

vez al RESET

SALIDA ANALOGICA

SALIDA ANALOGICA
El ARDUINO MEGA no tiene salida analgica en el
sentido que no existe ningn pin que tenga
voltaje variable.
Todas las salidas son digitales
HIGH = 5V
LOW = 0V
CMO HACEMOS PARA PODER
REPRESENTAR UN VOLTAJE VARIABLE CON
UNA SALIDA DIGITAL QUE EST FIJA EN
+5V/0V?

PULSE WIDTH MODULATION


Para escribir una variable analgica se
utiliza la funcin AnalogWrite
AnalogWrite( pin , valor )
Pin = designa el pin de salida que ser
analgica
Valor = entero entre 0 y 255.

PULSE WIDTH MODULATION


Suponiendo que el perodo o ciclo de la onda
cuadrada dura 1 segundo y mide 5 voltios al 100% de
valor (siempre est en 5V durante todo ese segundo)
El valor ANALOGICO de salida ser 5V

5V

0,25s

0,5s

0,75s

1s

PULSE CODE MODULATION


Si ahora el valor en HIGH es de 0,5s
El valor ANALOGICO de salida ser el 50%
del valor mximo = 2,5V (
)
0,5s
5V

Out=2.5V

0,25s

0,5s

0,75s

1s

PULSE CODE MODULATION


Si ahora el valor en HIGH es de 0,25s
El valor ANALOGICO de salida ser el 25%
del valor mximo = 1,25V (
)
0,25s
5V

Out=
1,25V
0

0,25s

0,5s

0,75s

1s

PULSE CODE MODULATION


Si ahora el valor en HIGH es de 0,1s
El valor ANALOGICO de salida ser el 10%
del valor mximo = 0,5V (
)
0,1s

5V

Out=
0,5V
0

0,25s

0,5s

0,75s

1s

t
PULSE
CODE
V 100 MODULATION
T

CONTROL DE BRILLO DE UN LED


int led = 2;

// el pin donde se conecta el LED

int brightness = 0;

// indice de brillantez (0 a 255)

int incremento= 5;

// increment de brillo

void setup()
{
pinMode(led, OUTPUT);
}
void loop()

analogWrite(led, brightness); // brillo inicial en el pin 2


// cambio del brillo incrementndolo en la cantidad fadeAmount
brightness = brightness + incremento;
// inversion del sentido del increment al finalizar la serie:
if (brightness == 0 || brightness == 255) {
incremento = - incremento;
}
// esperar por 30 ms para poder apreciar el efecto
delay(30);
}

LEER DATOS DEL SERIAL

MANEJO DE PUERTO SERIAL


Serial.Begin(velocidad)
Serial.println(datos)
Serial.println(datos,
tipos_datos)
tipos_datos= DEC, HEX, OCT, BIN,
BYTE
Si no se especifica, se asume STR

Serial.print(datos,
tipos_datos)

MANEJO DE PUERTO SERIAL

Serial.available()
Devuelve un entero con el nmero de
bytes (carcteres) disponibles para leer
desde el buffer serie, 0 si no hay
ninguno.
Si hay datos
disponibles,SerialAvailable() ser
mayor que 0.
El buffer serie puede almacenar como

MANEJO DE PUERTO SERIAL

Serial.Read()
Lee o captura un byte (caracter) desde el
puerto serie.
Devuelve:
El siguiente byte (caracter) desde el
puerto serie
-1 si no hay ninguno.

LEER UN CARACTER DEL SERIAL


char caracter;
void setup()
{
Serial.begin(9600); Serial.println("Power On");
}
void loop()
{
while(Serial.available())
{
caracter = Serial.read();
Serial.print("CHAR="); Serial.println(caracter);
Serial.print("DEC=") ; Serial.println(caracter,DEC);
Serial.print("BIN=") ; Serial.println(caracter,BIN);
}

LEER STRING DEL SERIAL


String content = "";
char caracter;
void setup()
{ Serial.begin(9600); Serial.write("Power On");}
void loop()
{ while(Serial.available())
{
content += Serial.readString();
}
if (content != "")
{Serial.println(content);
content="";
}
}

ENTRADA DIGITAL

LEER ENTRADA DIGITAL

int pushButton = 2; //nombre entrada digital 2


void setup() // setup ejecuta 1

vez al RESET

{
Serial.begin(9600);
pinMode(pushButton, INPUT);
}
void loop()
{
int buttonState = digitalRead(pushButton);
Serial.println(buttonState);
delay(1);
}

ENTRADA ANALGICA

ENTRADA ANALGICA
Las entradas analgicas devuelven un
nmero entero entre 0 y 1024:
0 cuando en la entrada no se
registra voltaje
1023 cuando en la entrada se
registra 5V
5V

GND
A0 = 512

ENTRADA ANALGICA

5V tensin al potencimetro
GND masa (cero)

A0 al
cursor del
potencimetr
o

ENTRADA ANALGICA
intsensorPin=A0;
intledPin=13;
intsensorValue=0;
voidsetup(){
pinMode(ledPin,OUTPUT);
}
voidloop(){
sensorValue=analogRead(sensorPin);
digitalWrite(ledPin,HIGH);
delay(sensorValue);
digitalWrite(ledPin,LOW);
delay(sensorValue);
}

MATRIZ DE LED SENCILLA

COLUMNA 1

PIN 2

COLUMNA 2

PIN 8

PIN 4

COLUMNA 3

PIN 10

PIN 6

PIN 12

CONSIGNA: En forma secuencial, prender con Fader (Salida analgica)


cada columna, al terminar el ciclo de la columna 1 pasar a la 2 y luego a la
3, para recomenzar el ciclo con la columna 1. El ciclo desde apagado a
mximo brillo=4 seg.

S-ar putea să vă placă și