Paso 5: Pantalla de tubo Nixie Me.
* Nombre: Detector de velocidad.
* Autor: Macarena
* Actualizado: Macarena
* Fecha: 3/13/2014
* Descripción: estoy usando un Makeblock Me-LightSensor para hacer un detector de velocidad de rueda.
Puede conectar este Me-LightSensor a la PORT_3, PORT_6, PORT_7, PORT_8 de Me-zócalo.
* Copyright (C) 2013 fabricante obras tecnología Co., Ltd. Todos los derechos reservados.
* http://www.makeblock.cc/
**************************************************************************/
#include < Makeblock.h >
#include < Arduino.h >
#include < SoftwareSerial.h >
#include < EEPROM.h >
#include < Wire.h >
#include < TimerOne.h >
#include < avr/pgmspace.h >
#include "TM1637.h"
#define en 1
#define apagado 0
int8_t TimeDisp [] = {0 x 00, 0 x 00, 0 x 00, 0 x 00};
unsigned char ClockPoint = 1;
unsigned char actualización;
unsigned char microsecond_10 = 0;
unsigned char segundo;
unsigned char _microsecond_10 = 0;
unsigned char _second;
unsigned int eepromaddr;
Flag_ReadTime Boolean;
#define CLK A3 / pins definiciones de TM1637 y puede ser cambiado a otros puertos
#define DIO A2 //Digital tude está conectado al puerto 7.
Tm1637(CLK,DIO) de TM1637;
LightSensor(PORT_6) de MeLightSensor;
Motor1(M1) de MeDCMotor;
uint8_t motorSpeed = 100;
int valor = 0; una variable por valor de lightSensor
int cuenta = 0;
buff de int [3];
int suma = 0;
int omega;
Static int matriz [3] = {-1, 4, -1};
void setup()
{
inicializar la comunicación serial a 9600 bps
Serial.Begin(9600);
tm1637.set (5); //BRIGHT_TYPICAL = 2, BRIGHT_DARKEST = 0, más brillantes = 7;
tm1637.init();
Timer1.Initialize (10000); //timing para 10ms
Timer1.attachInterrupt (TimingISR); //declare la interrupción servicio rutina: TimingISR
lightSensor.lightOn();
}
time0 largo = 0;
void loop()
{
valor = lightSensor.read();
motor1.Run(motorSpeed);
leer el valor de lightSensor:
Buff [0] = buff [1];
Buff [1] = buff [2];
Buff [2] = valor;
suma = matriz [0] * buff [0] + matriz [1] * buff [1] + matriz [2] * buff [2];
Serial.println(SUM); descomentar esta línea y comentar las 15 a continuación líneas si desea ver los datos en tablas de serie
if(Sum >750)
{
cuenta ++;
largo t=millis();
largo deltaT = t-time0;
if(deltaT>100)
{
Omega = 360000/deltaT;
Se puede utilizar Printf fuction si agrega la biblioteca de "printf" a la clase de impresión.
más detalles en http://playground.arduino.cc/Main/Printf#.UyE3NxSSz9F
if(Update == on)
{
TimeUpdate(omega);
tm1637.display(TimeDisp);
}
Serial.Print(Omega);
Serial.println("Rad/s");
}
TIME0 = t;
}
Delay(2);
}
//************************************************
void TimingISR()
{
microsecond_10 ++;
Actualización = ON;
if(microsecond_10 == 100) {}
segundo ++;
if(Second == 60)
{
segundo = 0;
}
microsecond_10 = 0;
}
ClockPoint = (~ ClockPoint) & 0 x 01;
if(Flag_ReadTime == 0)
{
_microsecond_10 = microsecond_10;
_second = segundo;
}
}
void TimeUpdate(int value)
{
Si tm1637.point (ClockPoint) (POINT_ON); //POINT_ON = 1, POINT_OFF = 0;
tm1637.point(POINT_ON) otra cosa;
TimeDisp [0] = valor/1000;
TimeDisp [1] = valor/100;
TimeDisp [2] = valor/10 - TimeDisp [1] * 10;
TimeDisp [3] = valor % 10;
Actualización = OFF;
}
Eso es todo. Empezar a construir tu propio uno. Si tienes alguna opinión sobre él, puede publicarlo aquí o visite nuestro Foro para discutir con nosotros.