Étape 5: Affichage Tube Nixie-Me.
* Nom du fichier : Détecteur de vitesse.
* Auteur : Yuwei
* Mise à jour : Yuwei
* Date : 3/13/2014
* Description : J’utilise un Makeblock Me-LightSensor faire un détecteur de vitesse de roue.
Vous pouvez connecter cette Me-LightSensor à le PORT_3, PORT_7, PORT_6, PORT_8 de Me-plinthe.
* Copyright (C) 2013 Maker œuvres Technology Co., Ltd. Tous droits réservés.
* 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 sur 1
#define arrêt 0
int8_t TimeDisp [] = {0 x 00, 0 x 00, 0 x 00, 0 x 00} ;
unsigned char ClockPoint = 1 ;
unsigned char mise à jour ;
unsigned char microsecond_10 = 0 ;
unsigned char deuxième ;
unsigned char _microsecond_10 = 0 ;
_La unsigned char ;
unsigned int eepromaddr ;
Boolean Flag_ReadTime ;
#define CLK A3 / / axes définitions pour TM1637 et peut être changé vers d’autres ports
#define DIO A2 //Digital tude est connecté au port 7.
TM1637 tm1637(CLK,DIO) ;
MeLightSensor lightSensor(PORT_6) ;
MeDCMotor motor1(M1) ;
motorSpeed uint8_t = 100 ;
valeur int = 0 ; une variable pour valeur du lightSensor
int count = 0 ;
int buff [3] ;
int somme = 0 ;
int omega ;
public static int matrice [3] = {-1, 4, -1} ;
void setup()
{
initialiser une communication série à 9600 bps
Serial.Begin(9600) ;
tm1637.Set (5); //BRIGHT_TYPICAL = 2, BRIGHT_DARKEST = 0, plus brillants = 7 ;
tm1637.init() ;
Timer1.Initialize (10000); //timing de 10ms
Timer1.attachInterrupt (TimingISR); //declare l’interrupt service routine : TimingISR
lightSensor.lightOn() ;
}
long time0 = 0 ;
void loop()
{
valeur = lightSensor.read() ;
motor1.Run(motorSpeed) ;
lire la valeur lightSensor :
Buff [0] = buff [1] ;
Buff [1] = buff [2] ;
Buff [2] = value ;
somme = matrice [0] * buff [0] + matrice [1] * chamois [1] + matrice [2] * buff [2] ;
Serial.println(Sum) ; Décommentez cette ligne et commentez les 15 prochains lignes si vous souhaitez afficher les données dans les graphiques de série
if(Sum >750)
{
Count ++ ;
long t=millis() ;
deltaT long = t-time0 ;
if(DeltaT>100)
{
oméga = 360000/deltaT ;
Vous pouvez utiliser Printf fuction si vous ajoutez la bibliothèque « printf » à imprimer classe.
plus de détails sur 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) ;
}
//************************************************
Sub TimingISR()
{
microsecond_10 ++ ;
Mise à jour = ON ;
if(microsecond_10 == 100) {}
deuxième ++ ;
if(second == 60)
{
deuxième = 0 ;
}
microsecond_10 = 0 ;
}
ClockPoint = (~ ClockPoint) & 0 x 01 ;
if(Flag_ReadTime == 0)
{
_microsecond_10 = microsecond_10 ;
_La = seconde ;
}
}
Sub TimeUpdate(int value)
{
Si (ClockPoint) tm1637.point (POINT_ON); //POINT_ON = 1, POINT_OFF = 0 ;
d’autre tm1637.point(POINT_ON) ;
TimeDisp [0] = valeur/1000 ;
TimeDisp [1] = valeur/100 ;
TimeDisp [2] = valeur/10 - TimeDisp [1] * 10 ;
TimeDisp [3] = valeur % 10 ;
Mise à jour = OFF ;
}
C’est tout. Commencer à construire votre propre. Si vous avez une opinion à ce sujet, vous pouvez juste poster ici ou visiter notre forum pour discuter avec nous.