RAUNARDE
| Inviato il: 26/04/2018 17:54:08
|
Ciao a tutti, avrei bisogno di modificare uno sketch che mi funziona correttamente con un display 20x4 (I2C) ma non so come farlo funzionare con un 4 digit 7 display pilotati con CLK e DIO (TM1637 il tipo di display)
Il codice è preso da internet, ho solo modificato la parte del display per adattarlo al mio rispetto quello che montava.
Poi ho cercato in tutti i modi di trovare come far scrivere al display a 4 numeri a led la velocità che rilevo con un sensore ad effetto Hall, ma non ci riesco.
Dichiaro da subito che sto cercando di imparare arduino anche se è una cosa "Ardua" al momento.
spero qualcuno possa aiutarmi
Grazie mille
// include the library code:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Arduino.h>
// Module connection pins (Digital Pins)
int sensorPin = 4; //hall effect
int ledpin = 13;
float revs;
float rpm;
volatile byte rpmcount;
long previousmicros = 0;
long interval = 1000000;
// includere la libreria:
// initialize the library by associating any needed LCD interface pin
// with the arduino pin number it is connected to
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
/*
* LCD RS pin to digital pin 8
* LCD Enable pin to digital pin 9
* LCD D0 pin to digital pin 1
* LCD D1 pin to digital pin 10
* LCD D2 pin to digital pin 11
* LCD D3 pin to digital pin 12
* LCD D4 pin to digital pin 4
* LCD D5 pin to digital pin 5
* LCD D6 pin to digital pin 6
* LCD D7 pin to digital pin 7
* LCD R/W pin to ground
* 10K resistor:
* ends to +5V and ground
* wiper to LCD VO pin (pin 3)
*/
void setup()
{
// setup serial - diagnostics - port
Serial.begin(115200);
// setup pins
pinMode(sensorPin, INPUT);
pinMode(ledpin, OUTPUT);
// setup interript
attachInterrupt(0, RPM, RISING);
}
void RPM()
{
rpmcount++;
}
void loop()
{
int k;
uint8_t data = rpm;
unsigned long currentmicros = micros();
int sensorValue = digitalRead(sensorPin);
if (currentmicros - previousmicros > interval) {
previousmicros = currentmicros;
detachInterrupt(0);
revs=1000000.0/rpmcount;
rpm = 60000000.0/revs;
Serial.print("rpmcount\t");
Serial.print(rpmcount);
Serial.print(" rpm\t");
Serial.println(rpm);
lcd.clear();
lcd.begin(16, 2);
lcd.print(" DRILL SPEED");
lcd.setCursor(9, 1);
lcd.print(" RPM");
lcd.setCursor(3,1);
lcd.print(rpm,0);
display.setSegments(data);
rpmcount=0;
attachInterrupt(0, RPM, RISING);
}
if (sensorValue == 0) {
digitalWrite (ledpin, HIGH);
}
else {
digitalWrite(ledpin, LOW);
}
}
|