salve a tutti, ho risolto il problema passato con il display tm1637, ora me ne se aggiunto un’altro e non riesco proprio a capire cosa non va praticamente con un tm1637 conto, ilm segnale puo provenire da 1 di fonti che imposto con un commutatore 3 posizioni 12 vie. ina via fa la selezione dove prendere il segnale che conta, la seconda via è collegata a 3 ingressi analogici impostati come digitali. a sua volta ho implementato un display led a 7 segmenti collegati ai pin dal 4 al 10. ho iniziato a creare il sw dove su commutatore pos1 visualizz 1, su seconda 2 e su terza 3, e fin qui tutto ok. Ho implementato aggiungendo il tm1637 , mi sono assicurato che conti ma qui arrivano i problemi: i numeri 1-2-3 non appaiono e se appaiono i segmenti lampeggiano. fatto varie prove, modifiche ore e ore a rivedere anche tutorial ma non riesco a farlo funzionare. qualcuno può darmi info su cosa posso sbagliare?
//***************** CONTAPEZZI CON DISPLAY TM1632 *****************//
//***************** *****************//
//********************************************************************************//
// 1 ingresso per contare
// 1 ingresso NC per Resettare
// ingressi a negativo con abilitazione resistenze pull_up interne
// 2 uscite per rele e led
/**************** IMPOSTAZIONE DISPLAY *****************/
#include <TM1637Display.h>
#define CLK 2 // pin a cui è attaccato il pin CLK
#define DIO 3 // pin a cui è attaccato il pin DIO
TM1637Display display(CLK, DIO);
#define rele 11 //rele attaccato al pin 11
#define led 12 //led attaccato al pin 12
const int buttonPin1 = 15; //ingresso per impostare la cifra macchina
const int buttonPin2 = 16; //ingresso per impostare la cifra macchina
const int buttonPin3 = 17; //ingresso per impostare la cifra macchina
const int buttonPin4 = 19;
const int segA = 4; //segmento A display
const int segB = 5; //segmento B display
const int segC = 6; //segmento C display
const int segD = 7; //segmento D display
const int segE = 8; //segmento E display
const int segF = 9; //segmento F display
const int segG = 10; //segmento G display
int buttonState1 = 0; // variabile per la lettura dello stato del selettore
int buttonState2 = 0; // variabile per la lettura dello stato del selettore
int buttonState3 = 0; // variabile per la lettura dello stato del selettore
int buttonState4 = 0; // variabile per la lettura del pulsante per contare
int countapezzi = 0;
void setup() {
Serial.begin (9600);
display.setBrightness(4); // imposto la luminosita del display
pinMode(13, INPUT_PULLUP); // reset pulsante di reset display
pinMode(buttonPin1, INPUT_PULLUP); // pin 1 per impostare dove prendo il segnale per contare
pinMode(buttonPin2, INPUT_PULLUP); // pin 2 per impostare dove prendo il segnale per contare
pinMode(buttonPin3, INPUT_PULLUP); // pin 3 per impostare dove prendo il segnale per contare
pinMode(buttonPin4, INPUT_PULLUP);
pinMode(segA, OUTPUT); // imposto pin come uscita per segA display
pinMode(segB, OUTPUT); // imposto pin come uscita per segB display
pinMode(segC, OUTPUT); // imposto pin come uscita per segC display
pinMode(segD, OUTPUT); // imposto pin come uscita per segD display
pinMode(segE, OUTPUT); // imposto pin come uscita per segE display
pinMode(segF, OUTPUT); // imposto pin come uscita per segF display
pinMode(segG, OUTPUT); // imposto pin come uscita per segG display
pinMode(rele, OUTPUT); // imposto pin come uscita per il rele
pinMode(led, OUTPUT); // imposto pin come uscita per il led
}
int contapezzi, prevcontapezzi ; // qui creo delle variabili di ingresso e uscita
void loop() {
buttonState1 = digitalRead (buttonPin1); //qui leggo lo stato del selettore
buttonState2 = digitalRead (buttonPin2); //qui leggo lo stato del selettore
buttonState3 = digitalRead (buttonPin3); //qui leggo lo stato del selettore
buttonState4 = digitalRead (buttonPin4); //qui leggo lo stato del pulsante
int contapezzi = digitalRead(buttonPin4); // ingresso NO per contare
display.showNumberDec(countapezzi);
delay(100);
if (!contapezzi && prevcontapezzi ) { // qui incremento
countapezzi++;
delay (50);
}
if (digitalRead (13)) // se premo azzero
countapezzi = 0; // l'ingresso deve essere NC a negativo lo faccio con 1 rele esterno
{
prevcontapezzi = contapezzi; // contapezzi su
}
///////////////////////////////////////////////////////
//***** VISUALIZZO NUMERO 1 NEL DISPLAY *****//
///////////////////////////////////////////////////////
if (buttonState1 == HIGH) {
digitalWrite(segB, LOW); // Accendo il segmento B
digitalWrite(segC, LOW); // Accendo il segmento C
} else {
digitalWrite(segB, HIGH); // Spengo il segmento B
digitalWrite(segC, HIGH); // Spengo il segmento C
}
delay(10);
///////////////////////////////////////////////////////
//***** VISUALIZZO NUMERO 2 NEL DISPLAY *****//
///////////////////////////////////////////////////////
if (buttonState2 == HIGH) {
digitalWrite(segA, LOW); // Accendo il segmento A
digitalWrite(segB, LOW); // Accendo il segmento B
digitalWrite(segD, LOW); // Accendo il segmento D
digitalWrite(segE, LOW); // Accendo il segmento E
digitalWrite(segG, LOW); // Accendo il segmento G
} else {
digitalWrite(segA, HIGH); // Spengo il segmento A
digitalWrite(segB, HIGH); // Spengo il segmento B
digitalWrite(segD, HIGH); // Spengo il segmento D
digitalWrite(segE, HIGH); // Spengo il segmento E
digitalWrite(segG, HIGH); // Spengo il segmento G
}
delay(10);
///////////////////////////////////////////////////////
//***** VISUALIZZO NUMERO 3 NEL DISPLAY *****//
///////////////////////////////////////////////////////
if (buttonState3 == HIGH) {
digitalWrite(segA, LOW); // Accendo il segmento A
digitalWrite(segB, LOW); // Accendo il segmento B
digitalWrite(segC, LOW); // Accendo il segmento C
digitalWrite(segD, LOW); // Accendo il segmento D
digitalWrite(segG, LOW); // Accendo il segmento G
} else {
digitalWrite(segA, HIGH); // Spengo il segmento A
digitalWrite(segB, HIGH); // Spengo il segmento B
digitalWrite(segC, HIGH); // Spengo il segmento C
digitalWrite(segD, HIGH); // Spengo il segmento D
digitalWrite(segG, HIGH); // Spengo il segmento G
delay(10);
}
}