Introducción a la depuración del microcontrolador (y un cronómetro Pomodoro) (9 / 9 paso)

Paso 9: Fontanero Super cronómetro Pomodoro código!

main.c


#include "msp430g2211.h"
#include "notes.h"

unsigned int clics = 0;
unsigned int segundos = 0;
unsigned int minutos = 0;
unsigned int new_minute = 0;
const unsigned int pomodoro_length = 25;
const unsigned int pomodoro_break = 5;

#define LED4 albañilería1
#define LED3 BIT2
#define LED2 BIT3
#define LED1 BIT4
#define LED0 BIT5
#define zumbador BIT6
#define poder BIT7

void setLEDs (valor char) {}
if(Value & 0x10)
P1OUT | = (LED4); prendieron el LED4
otra cosa
P1OUT & = ~ (LED4); partió el LED4

if(Value & 0x08)
P1OUT | = (LED 3); encender LED3
otra cosa
P1OUT & = ~ (LED 3); partió LED3

if(Value & 0x04)
P1OUT | = (LED2); encender LED2
otra cosa
P1OUT & = ~ (LED2); partió el LED2

if(Value & 0x02)
P1OUT | = (LED1); encender LED1
otra cosa
P1OUT & = ~ (LED1); partió el LED1

if(Value & 0x01)
P1OUT | = (LED0); prendieron LED0
otra cosa
P1OUT & = ~ (LED0); partió LED0
}

anular principal (void) {}

unsigned int pomodoro_remain = pomodoro_length + pomodoro_break;

WDTCTL = WDTPW + WDTHOLD; Pare temporizador de vigilancia para evitar reinicio de tiempo

BCSCTL1 = CALBC1_1MHZ; Establecer DCO a valor de calibración de fábrica de 1MHz
DCOCTL = CALDCO_1MHZ;

P1DIR | = (LED0 LED1 LED2 + LED3 + LED4 + ZUMBADOR + POTENCIA); todos los pines del LED y zumbador como salida
P1DIR | = POTENCIA; ENERGÍA permanece así hasta que queremos matar a nuestra propia energía
P1OUT & = ~ (LED0 LED1 LED2 + LED3 + LED4 + zumbador); todos los LED y zumbador de

CCTL0 = CCIE; CCR0 interrupción habilitada
CCR0 = 50000; divisor de reloj
TACTL = TASSEL_2 + MC_1; SMCLK, upmode
_BIS_SR(GIE); habilitar interrupción

setLEDs(pomodoro_remain);
playTheme();

{while(pomodoro_remain)}
if(minutes > new_minute) {}
new_minute = minutos;
pomodoro_remain--;
setLEDs(pomodoro_remain);
if(pomodoro_remain == pomodoro_break) {}
playFlagTune();
} else {}
pitido (G2, 124); .25 un pitido, excepto cuando se llega a la rotura
}
}
}

play1up(); campana final
P1OUT & = ~ (potencia); sistema energía apagado
¿Dormir para siempre... no debería llegar a esto, pero quién sabe? :)
_BIS_SR (LPM1_bits + GIE);

}

Rutina de servicio de interrupción de A0 de temporizador
#pragma vector = TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
Nos llamará a 50k / 1Mhz = 20 veces un segundos
clicks ++;
Si (hace clic en > = 20) {}
Haga clic en = 0;
segundos ++; reloj de avance para cada segundo
Si (segundos > = 60) {}
segundos = 0;
minutos ++;
}
}
}

Notes.h


Esto no debería estar aquí, pero estaba apurado a presentar
antes del concurso plazo funcionó hacia fuera :)
#define zumbador BIT6

Definición de frequecies las notas en Hertz.
#define C8 4186
#define B7 3951
#define As7 3729
#define A7 3520
#define Gs7 3322
#define G7 3136
#define Fs7 2960
#define F7 2794
#define E7 2637
#define Ds7 2489
#define D7 2349
#define Cs7 2217
#define C7 2093
#define B6 1976
#define As6 1865
#define A6 1760
#define Gs6 1661
#define G6 1568
#define Fs6 1480
#define F6 1397
#define E6 1319
#define Ds6 1245
#define D6 1175
#define Cs6 1109
#define C6 1047
#define B5 988
#define As5 932
#define A5 880
#define Gs5 831
#define G5 784
#define Fs5 740
#define F5 698
#define E5 659
#define Ds5 622
#define D5 587
#define Cs5 554
#define C5 523
#define B4 494
#define COMO4 466
#define A4 440
#define Gs4 415
#define G4 392
#define Fs4 370
#define F4 349
#define E4 330
#define Ds4 311
#define D4 294
#define Cs4 277
#define C4 262


#define B3 247
#define As3 233
#define A3 220
#define Gs3 208
#define G3 196
#define Fs3 185
#define F3 175
#define E3 165
#define Ds3 156
#define D3 147
#define Cs3 139
#define C3 131
#define B2 123
#define As2 117
#define A2 110
#define Gs2 104
#define G2 98
#define Fs2 92
#define F2 87
#define E2 82
#define Ds2 78
#define D2 73
#define Cs2 69
#define C2 65
#define B1 62
#define As1 58
#define A1 55
#define Gs1 52
#define G1 49
#define Fs1 46
#define F1 44
#define E1 41
#define Ds1 39
#define D1 37
#define Cs1 35
#define C1 33
#define B0 31
#define As0 29
#define A0 28

{} void delay_ms (unsigned int ms)
unsigned int i;
para (i = 0; i < = ms; i ++)
__delay_cycles(1000);
}

void delay_us (unsigned int nos) {}
unsigned int i;
para (i = 0; i < =; i ++)
__delay_cycles(1);
}

Esta función genera la onda cuadrada que hace el altavoz piezo con una frecuencia determinada.
{} void beep (unsigned int nota, larga duración)

largo retardo = (long)(62500/note); Esta es la semiperiod de cada nota.
largo plazo = (long)((duration*100)/delay); Se trata de cuánto tiempo tenemos que pasar en la nota.

para (largo i = 0; i < tiempo; i ++) {}
P1OUT | = ZUMBADOR; Zumbador set en...
delay_us(Delay); .. .para un semiperiod...
P1OUT & = ~ zumbador; .. .a continuación reiniciarlo...
delay_us(Delay); .. .para el otro semiperiod.
}
}

void playTheme(void) {}
tema
4|EE-e-ce-g---|| c---e-GA-FG-e-CD---||
//3|-------------g----|| ---g--e--a-b-AA-g---b---||
//2|-------------g----|| ---------------------------------||
pitido (E4, 124); pitido (E4, 124); delay_ms(124);
pitido (E4, 124); delay_ms(124);
pitido (C4, 124); pitido (E4, 124); delay_ms(124);
pitido (G4, 124); delay_ms(496);
pitido (G3, 124); delay_ms(496);
pitido (C4, 124); delay_ms(248);
pitido (G3, 124); delay_ms(248);
pitido (E3, 124); delay_ms(248);
pitido (A3, 124); delay_ms(124);
pitido (B3, 124); delay_ms(124);
pitido (As3, 124); pitido (A3, 124); delay_ms(124);
pitido (G3, 124); pitido (E4, 124); delay_ms(124);
pitido (G4, 124); pitido (A4, 124); delay_ms(124);
pitido (F4, 124); pitido (G4, 124); delay_ms(124);
pitido (E4, 124); delay_ms(124);
pitido (C4, 124); pitido (D4, 124); pitido (B4, 124);
suena mejor sin la última línea a menos que se coloca
}

void play1up(void) {}
sonido 1UP
pitido (E5, 62); delay_ms(62);
pitido (G5, 62); delay_ms(62);
pitido (E6, 62); delay_ms(62);
pitido (C6, 62); delay_ms(62);
pitido (D6, 62); delay_ms(62);
pitido (G6, 312);
}

void playFlagTune (void) {}
Bandera *
pitido (G2, 124);
pitido (C3, 124);
pitido (E3, 124);
pitido (G3, 124);
pitido (C4, 124);
pitido (E4, 124);
pitido (G4, 372);
pitido (E4, 372);

pitido (Gs2, 124);
pitido (C3, 124);
pitido (Ds3, 124);
pitido (Gs3, 124);
pitido (C4, 124);
pitido (Ds4, 124);
pitido (Gs4, 372);
pitido (Ds4, 372);

pitido (As2, 124);
pitido (D3, 124);
pitido (F3, 124);
pitido (As3, 124);
pitido (D4, 124);
pitido (F4, 124);
pitido (COMO4, 372);
pitido (COMO4, 124);
pitido (COMO4, 124);
pitido (COMO4, 124);
pitido (E4, 372);
}

Artículos Relacionados

Cómo conducir una gran cantidad de LEDs de unos pines del microcontrolador.

Cómo conducir una gran cantidad de LEDs de unos pines del microcontrolador.

Con el hecho de que muchos pines del microcontrolador tienen tres Estados (+ V, GND, o"alta impedancia", coche N*(N-1) LEDs de pines N. Así que el pequeño 8microcontrolador de PIN como un PIC12Fxxx o un ATtiny11 puede conducir 20 LEDs ensus cinc
Principio microcontroladores parte 11: Temporizadores, contadores y el reloj del microcontrolador

Principio microcontroladores parte 11: Temporizadores, contadores y el reloj del microcontrolador

Temporizadores y contadores son tan esenciales que usted verá muchos ejemplos que a lo largo de esta serie. Como el nombre lo dice, se utilizan temporizadores para tiempo y contando. Cuenta y el tiempo le permite hacer algunas cosas muy prolijo como
Cronómetro con microcontrolador ATmega328 de vuelta

Cronómetro con microcontrolador ATmega328 de vuelta

este instructable le mostrará cómo construir su propio cronómetro para registrar múltiples fracturas utilizando un microcontrolador programable ATmega328. Cuando uno presiona el botón de inicio (o abofetea a la banda de metal en mi reloj), la pantall
Controlado de radio del cronómetro

Controlado de radio del cronómetro

Como profesor y miembro de diversas organizaciones deportivas, he observado varios sistemas de tiempos diferentes, desde el tradicionales cronómetros independientes a sistemas coordinados más sofisticados (y caros) que al mismo tiempo tiempo, luego g
Campeonato de Barista preparación cronómetro • Introducción

Campeonato de Barista preparación cronómetro • Introducción

Sobre las necesidades de la (2014) Campeonato Mundial de baristas de las reglas y regulaciones, es necesario un tiempo adecuado y preciso de medición durante la competición. Estas mediciones se realizan generalmente por cronómetros regulares con toda
DIY Laser Tag sistema (versión de prueba del microcontrolador)

DIY Laser Tag sistema (versión de prueba del microcontrolador)

aquí está el esperada etiqueta sistema microcontrolador setup! Si usted tiene tener un microcontrolador con entradas múltiples, entonces esto le dirá cómo utilizarlo para crear y programar un sistema de etiquetas láser de su cuenta con una personaliz
Manipulación de registro del microcontrolador

Manipulación de registro del microcontrolador

Siempre estoy sorprendido por la nueva tecnología que constantemente está saliendo que permite a aficionados como yo acceso a microcontroladores poderosos y baratos como los consejos de desarrollo de Arduino o chipKIT. Son fácil de programar y fácil
Conceptos básicos del microcontrolador mbed para el brazo

Conceptos básicos del microcontrolador mbed para el brazo

mientras que visita a una feria de Brsitol Pi, recogí una placa de microcontrolador de brazo gratis (normalmente cuesta £30 +). Hubo dos juntas siendo regalados, que eran nuevos en el modelo de LPC1768 tiempo. Lo tengo porque en el momento había esta
FUENTE de alimentación del microcontrolador de PIC

FUENTE de alimentación del microcontrolador de PIC

Hola todo el mundo,Mi nombre es Atanas, de MACEDONIAEn primer lugar, quiero que todo el mundo para ver mi YouTube video.Mi video para este proyecto.Volveré pronto a publicar el esquema y el código de este proyecto.Gracias.
Medida del ángulo mediante giroscopio, acelerómetro y Arduino

Medida del ángulo mediante giroscopio, acelerómetro y Arduino

el dispositivo es un prototipo áspero de lo que eventualmente se convertirá en un robot de balance del uno mismo, esta es la segunda parte de la cosa del agujero (leer acelerómetro y controlar un motor a balance del uno mismo). La primera parte con s
Trípode caballete soporte para cuchillo y lanzamiento del tomajao en 16" diámetro objetivo redondo

Trípode caballete soporte para cuchillo y lanzamiento del tomajao en 16" diámetro objetivo redondo

esto es para apoyar un objetivo redondo de cuchillo competitivo y tomahawk lanzando práctica utilizando la Alianza de lanzadores de cuchillo americano reglas y regulaciones.  La circular deberá ser un mínimo de 16 pulgadas (41 cm) de diámetro y 8 pul
Inicio rápido de la Junta de ARM7 desarrollo

Inicio rápido de la Junta de ARM7 desarrollo

la Junta de desarrollo de ARM7 viene con LPC2148 microcontrolador de brazo. El microcontrolador puede programarse a través del puerto serial usando el gestor de arranque serial de la en-viruta. La Junta cuenta con varias interfaces disponibles a bord
Self balancing one wheeled electric skateboard

Self balancing one wheeled electric skateboard

NOTE:Mayo de 2011: Este instructable es ahora bastante antiguo (relativamente) y ahora pude reconstruir este proyecto más simplemente con un Arduino como el controlador.Actualmente estoy trabajando en un monociclo con el mismo controlador de motor OS
Escalas de analfabetismo personas

Escalas de analfabetismo personas

para mi dayjob, trabajo con personas con discapacidades físicas y mentales. Algunas de estas personas son también analfabetismo y que a veces puede causar problemas para el trabajo que tienen que hacer. Uno de los puestos de trabajo que hacen es volv