Sunteți pe pagina 1din 5

INTERRUPCION EXTERNA

const int LED1=13;


const int LED2=12;
const int intPin=2;
volatile int state=LOW;
void setup(){
pinMode(LED1,OUTPUT);
pinMode(LED1,OUTPUT);
pinMode(intPin,INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(intPin),interrupt,RISING);
}
void loop(){
digitalWrite(LED2,HIGH);
delay(2000);
digitalWrite(LED2,LOW);
delay(2000);
}
void interrupt(){
state=digitalRead(LED1);
state=!state;
digitalWrite(LED1,state);
}

INTERRUOCION INTERNA
//genera una senal cuadrada
#include "TimerOne.h"
int led=13;
int ledState=0;

void setup(){
//configuralos pines 1y2 como entradas
pinMode(0,INPUT_PULLUP);
pinMode(1,INPUT_PULLUP);
//configura los pines 10 y 13 ocmo salida
pinMode(13,OUTPUT);
pinMode(10,OUTPUT);
Timer1.initialize(500000); //inicializa el timer 1 y fija un periodo de 500 ms.
// las interrupciones se ejucutan casa 500 ms
Timer1.attachInterrupt(callback); // attaches callback() es un timer overflow interrupt
}

void callback()
{
ledState=!ledState;
digitalWrite (10, ledState);

void loop()
{
int P1=digitalRead(0);
int P2=digitalRead(1);
if(P1==LOW){
digitalWrite(led, HIGH);//led=1
}
if(P2==LOW){
digitalWrite(led,LOW);// led=0
}
}
INTERRUPCION (SEÑAL 2ms TIMER1)
#include <TimerOne.h>
int led=13;
int ledstate=0;
void setup() {
pinMode(0, INPUT_PULLUP);
pinMode(1, INPUT_PULLUP);
pinMode(13,OUTPUT);
pinMode(10,OUTPUT);
Timer1.initialize(200000);
Timer1.attachInterrupt(callback);
}
void callback(){
ledstate=!ledstate;
digitalWrite(10,ledstate);
}
void loop() {
// put your main code here, to run repeatedly:
int P1=digitalRead(0);
int P2=digitalRead(1);
if(P1==LOW){
digitalWrite(led, HIGH);
}
if(P2==LOW){
digitalWrite(led, LOW);
}}

INTERRUPCION (CONTADOR DISPLAY)


const int decoder[]={64,121,36,36,48,25,18,3,120,0,24};
#include <TimerOne.h>
int led = 13;
int pulsador =2;
volatile int estado = LOW;
int decena=0;
void setup() {
pinMode(pulsador, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(pulsador),ManejadorPulsador,FALLING);
Timer1.initialize(800000);
Timer1.attachInterrupt(callback);
int pin;
for(pin=6;pin<=12;pin++)
{
pinMode(pin,OUTPUT);
} }
void callback(){
if(decena <=10){
display7(decoder[decena]);
decena++;
}
if(decena ==11){
decena =0;
} }
void ManejadorPulsador(){
estado= !estado;
decena =0;}
void display7(int valor){
digitalWrite(6, bitRead(valor, 0));
digitalWrite(7, bitRead(valor, 1));
digitalWrite(8, bitRead(valor, 2));
digitalWrite(9, bitRead(valor, 3));
digitalWrite(10, bitRead(valor, 4));
digitalWrite(11, bitRead(valor, 5));
digitalWrite(12, bitRead(valor, 6));
}
ADC (LCD)
#include <LiquidCrystal.h> //Libreria para manejar el LCD
LiquidCrystal LCD(12, 11, 5, 4, 3, 2); //Definición de pines para conectar el LCD (RS, E, D4, D5, D6, D7)
int analog=0;
int valor;
void setup()
{
LCD.begin(16, 2); //Tipo de LCD
}
void loop()
{
valor=analogRead(analog); //lee el pin 0 y lo asigna a la variable valor
LCD.clear();
LCD.setCursor(5,0);
LCD.print("ADC");
LCD.setCursor(5, 1);
LCD.print(valor);
delay(200);
}

ADC (CONVERSION DE VALORES)


#include <LiquidCrystal.h> //Libreria para manejar el LCD
LiquidCrystal LCD(12, 11, 5, 4, 3, 2); //Definición de pines para conectar el LCD (RS, E, D4, D5, D6, D7)
int analog=0; //Define el pin 0 como "analog"
int valor;
int conversion;
void setup()
{
LCD.begin(16, 2); //Tipo de LCD
}
void loop()
{
valor=analogRead(analog); //lee el pin 0 y lo asigna a la variable valor
conversion=valor*5/1023;
LCD.clear();
LCD.setCursor(5,0); //Columna 0, fila 0
LCD.print("ADC");
LCD.setCursor(5, 1); //Columna 5 fila 2
LCD.print(conversion, 2);
delay(200);
}

PWM- SALIDA ANALÓGICA


//PWM-GENERA UNA ONDA DE 500 Hz
//EL PERIODO ESTÁ DEFINIDO EN 200 ms.
int led=10; //define el pin 10 como "led"
int valor=64; //define la variable "valor"

void setup()
{
//No es necesario configurar entradas y salidas
}

void loop()
{
analogWrite(led, valor); //Escribe en el pin 10 valor
}
ADC(ENTRADA DE 0 A 15V)

#include <EEPROM.h>
#include <LiquidCrystal.h> //Libreria para manejar el LCD
LiquidCrystal LCD(12, 11, 5, 4, 3, 2); //Definición de pines para conectar el LCD (RS, E, D4, D5, D6, D7)
float analog=0; //Define el pin 0 como "analog"
float valor;
float conversion;
void setup()
{
LCD.begin(16, 2); //Tipo de LCD
}
void loop()
{
valor=analogRead(analog); //lee el pin 0 y lo asigna a la variable valor
conversion=valor*15/1023;
LCD.clear();
LCD.setCursor(0,0); //Columna 0, fila 0
LCD.print("Voltaje 0 a 15 v");
LCD.setCursor(5, 1); //Columna 5 fila 2
LCD.print(conversion, 2);
delay(200);
}

INTERRUPCION(CRONOMETRO)
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 1, 0);

int horas ;
int minutos ;
int segundos ;
int decimas;
long milisegundos;
int reset = 2;
int pausa = 3;
int inicio = 7;
int continuar = 6;

void setup(){

pinMode(reset, INPUT_PULLUP);
pinMode(pausa, INPUT_PULLUP);
pinMode(inicio, INPUT_PULLUP);
pinMode(continuar, INPUT_PULLUP);
lcd.begin(16,2);
attachInterrupt(digitalPinToInterrupt(reset),resetear, FALLING);
attachInterrupt(digitalPinToInterrupt(pausa),pausar, FALLING);
}
void loop(){
if(digitalRead(inicio)== 0 ){
milisegundos = millis();
if(milisegundos % 100 == 0){ //Only enter if it has passed tenth of a second
decimas++;
if(decimas == 10){ //When it has passed 10 tenths of a second it count one second
decimas = 0;
segundos++;
}
if(segundos == 60){ //When it has passed 60 seconds it count one minute
segundos = 0;
minutos++;
}
if(minutos == 60){ //When it has passed 60 minutes it count one hour
minutos = 0;
horas++;
}

//Print Time
lcd.setCursor(3,0);
if(horas < 10){
lcd.print("0");
}
lcd.print(horas);
lcd.print(":");
lcd.setCursor(6,0);
if(minutos < 10){
lcd.print("0");
}
lcd.print(minutos);
lcd.print(":");
lcd.setCursor(9,0);
if(segundos < 10){
lcd.print("0");
}
lcd.print(segundos);
lcd.print(":");
lcd.setCursor(12,0);
lcd.print(decimas);
}
}
}

void resetear(){
horas = 0;
minutos = 0;
segundos = 0;
decimas = 0;
}

void pausar(){
while(digitalRead(pausa) == 0);
}

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