Ecco il prototipo del telegrafo ad aghi, funziona esattamente come l'originale che trovate QUI.
Come si può facilmente notare ci sono due file orizzontali di pulsanti, quelli della fila superiore spostano l'ago corrispondente di alcuni gradi in senso orario, l'opposto accade per l'altra fila.
Premendo quindi un pulsante della fila superiore ed uno di quella inferiore noteremo che la direzione indicata dagli aghi punterà sempre una lettera sul pannello di fondo.
Nel pannello che ho costruito non potevano rientrare tutte le lettere, ne manca infatti una, ho deciso di sacrificare la " Q " essendo facilmente sostituibile con la lettera " C " .
Ecco qui sotto anche lo schema a Fritzing:
per ora pubblico tutto lo sketch ad mentula canis, ciao
#include <Servo.h>
Servo servoUno;
Servo servoDue;
Servo servoTre;
Servo servoQuattro;
Servo servoCinque;
int h1ButtonPin = 2;
int l1ButtonPin = 4;
int h2ButtonPin = 7;
int l2ButtonPin = 8;
int h3ButtonPin = 12;
int l3ButtonPin = 13;
int h4ButtonPin = 14;
int l4ButtonPin = 15;
int h5ButtonPin = 16;
int l5ButtonPin = 17;
int h1ButtonState = 0;
int l1ButtonState = 0;
int h2ButtonState = 0;
int l2ButtonState = 0;
int h3ButtonState = 0;
int l3ButtonState = 0;
int h4ButtonState = 0;
int l4ButtonState = 0;
int h5ButtonState = 0;
int l5ButtonState = 0;
void setup()
{
Serial.begin(9600);
pinMode(h1ButtonPin, INPUT);
pinMode(l1ButtonPin, INPUT);
pinMode(h2ButtonPin, INPUT);
pinMode(l2ButtonPin, INPUT);
pinMode(h3ButtonPin, INPUT);
pinMode(l3ButtonPin, INPUT);
pinMode(h4ButtonPin, INPUT);
pinMode(l4ButtonPin, INPUT);
pinMode(h5ButtonPin, INPUT);
pinMode(l5ButtonPin, INPUT);
servoUno.attach(3);
servoDue.attach(5);
servoTre.attach(9);
servoQuattro.attach(10);
servoCinque.attach(11);
servoUno.write(90);
servoDue.write(90);
servoTre.write(90);
servoQuattro.write(90);
servoCinque.write(90);
}
void loop()
{
h1ButtonState = digitalRead(h1ButtonPin);
l1ButtonState = digitalRead(l1ButtonPin);
h2ButtonState = digitalRead(h2ButtonPin);
l2ButtonState = digitalRead(l2ButtonPin);
h3ButtonState = digitalRead(h3ButtonPin);
l3ButtonState = digitalRead(l3ButtonPin);
h4ButtonState = digitalRead(h4ButtonPin);
l4ButtonState = digitalRead(l4ButtonPin);
h5ButtonState = digitalRead(h5ButtonPin);
l5ButtonState = digitalRead(l5ButtonPin);
//*****pacchetto prima coppia pulsanti******
if (h1ButtonState == HIGH)
{
Serial.print(" 1^");
servoUno.write(180);
delay(10);
}
else if (l1ButtonState == HIGH)
{
Serial.print(" 1v");
servoUno.write(0);
delay(15);
}
else
{
Serial.print(" 1-");
servoUno.write(90);
delay(15);
}
//********fine prima coppia pulsanti
if (h2ButtonState == HIGH)
{
Serial.print(" 2^");
servoDue.write(180);
delay(15);
}
else if (l2ButtonState == HIGH)
{
Serial.print(" 2v");
servoDue.write(0);
delay(15);
}
else
{
Serial.print(" 2-");
servoDue.write(90);
delay(15);
}
//**************************** **********
if (h3ButtonState == HIGH)
{
Serial.print(" 3^");
servoTre.write(180);
delay(15);
}
else if (l3ButtonState == HIGH)
{
Serial.print(" 3v");
servoTre.write(0);
delay(15);
}
else
{
Serial.print(" 3-");
servoTre.write(90);
}
//**************************** ******
if (h4ButtonState == HIGH)
{
Serial.print(" 4^");
servoQuattro.write(180);
delay(15);
}
else if (l4ButtonState == HIGH)
{
Serial.print(" 4v");
servoQuattro.write(0);
delay(15);
}
else
{
Serial.print(" 4-");
servoQuattro.write(90);
delay(15);
}
//***********************
if (h5ButtonState == HIGH)
{
Serial.println(" 5^");
servoCinque.write(180);
delay(15);
}
else if (l5ButtonState == HIGH)
{
Serial.println(" 5v");
servoCinque.write(0);
delay(15);
}
else
{
Serial.println(" 5-");
servoCinque.write(90);
delay(15);
}
}
Servo servoUno;
Servo servoDue;
Servo servoTre;
Servo servoQuattro;
Servo servoCinque;
int h1ButtonPin = 2;
int l1ButtonPin = 4;
int h2ButtonPin = 7;
int l2ButtonPin = 8;
int h3ButtonPin = 12;
int l3ButtonPin = 13;
int h4ButtonPin = 14;
int l4ButtonPin = 15;
int h5ButtonPin = 16;
int l5ButtonPin = 17;
int h1ButtonState = 0;
int l1ButtonState = 0;
int h2ButtonState = 0;
int l2ButtonState = 0;
int h3ButtonState = 0;
int l3ButtonState = 0;
int h4ButtonState = 0;
int l4ButtonState = 0;
int h5ButtonState = 0;
int l5ButtonState = 0;
void setup()
{
Serial.begin(9600);
pinMode(h1ButtonPin, INPUT);
pinMode(l1ButtonPin, INPUT);
pinMode(h2ButtonPin, INPUT);
pinMode(l2ButtonPin, INPUT);
pinMode(h3ButtonPin, INPUT);
pinMode(l3ButtonPin, INPUT);
pinMode(h4ButtonPin, INPUT);
pinMode(l4ButtonPin, INPUT);
pinMode(h5ButtonPin, INPUT);
pinMode(l5ButtonPin, INPUT);
servoUno.attach(3);
servoDue.attach(5);
servoTre.attach(9);
servoQuattro.attach(10);
servoCinque.attach(11);
servoUno.write(90);
servoDue.write(90);
servoTre.write(90);
servoQuattro.write(90);
servoCinque.write(90);
}
void loop()
{
h1ButtonState = digitalRead(h1ButtonPin);
l1ButtonState = digitalRead(l1ButtonPin);
h2ButtonState = digitalRead(h2ButtonPin);
l2ButtonState = digitalRead(l2ButtonPin);
h3ButtonState = digitalRead(h3ButtonPin);
l3ButtonState = digitalRead(l3ButtonPin);
h4ButtonState = digitalRead(h4ButtonPin);
l4ButtonState = digitalRead(l4ButtonPin);
h5ButtonState = digitalRead(h5ButtonPin);
l5ButtonState = digitalRead(l5ButtonPin);
//*****pacchetto prima coppia pulsanti******
if (h1ButtonState == HIGH)
{
Serial.print(" 1^");
servoUno.write(180);
delay(10);
}
else if (l1ButtonState == HIGH)
{
Serial.print(" 1v");
servoUno.write(0);
delay(15);
}
else
{
Serial.print(" 1-");
servoUno.write(90);
delay(15);
}
//********fine prima coppia pulsanti
if (h2ButtonState == HIGH)
{
Serial.print(" 2^");
servoDue.write(180);
delay(15);
}
else if (l2ButtonState == HIGH)
{
Serial.print(" 2v");
servoDue.write(0);
delay(15);
}
else
{
Serial.print(" 2-");
servoDue.write(90);
delay(15);
}
//****************************
if (h3ButtonState == HIGH)
{
Serial.print(" 3^");
servoTre.write(180);
delay(15);
}
else if (l3ButtonState == HIGH)
{
Serial.print(" 3v");
servoTre.write(0);
delay(15);
}
else
{
Serial.print(" 3-");
servoTre.write(90);
}
//****************************
if (h4ButtonState == HIGH)
{
Serial.print(" 4^");
servoQuattro.write(180);
delay(15);
}
else if (l4ButtonState == HIGH)
{
Serial.print(" 4v");
servoQuattro.write(0);
delay(15);
}
else
{
Serial.print(" 4-");
servoQuattro.write(90);
delay(15);
}
//***********************
if (h5ButtonState == HIGH)
{
Serial.println(" 5^");
servoCinque.write(180);
delay(15);
}
else if (l5ButtonState == HIGH)
{
Serial.println(" 5v");
servoCinque.write(0);
delay(15);
}
else
{
Serial.println(" 5-");
servoCinque.write(90);
delay(15);
}
}