Hey I'm building keyboard with 2 boards. One is Nano and Two is Leonardo
Nano is measuring potentiometer from 0-1023 and using my code to power Relays
nano will hold that potentiometer value for 10sec and other board will set that value to 0 after 10sec.
int potPin = A1; //Sensor
int LEDPin = 9;
const int buttonPin = 12; //Reset
int LEDButtR = A3;
int LEDButtG = A4;
int LEDButtB = A2;
int readValue, lastRead;
int level1 = 2;
int level2 = 3;
int level3 = 4;
int level4 = 5;
int level5 = 6;
int level6 = 7;
int level7 = 8;
int level8 = 9;
int level9 = 10;
int level10 = 11;
int buttonState = 0;
unsigned long writeValue; // to get the calculation done better, without using floats
void setup() {
pinMode(potPin, INPUT);
pinMode(LEDPin, OUTPUT);
pinMode(buttonPin, INPUT);
pinMode(LEDButtG, OUTPUT);
pinMode(LEDButtR, OUTPUT);
pinMode(LEDButtB, INPUT);
Serial.begin(57600);
pinMode(level1, OUTPUT);
pinMode(level2, OUTPUT);
pinMode(level3, OUTPUT);
pinMode(level4, OUTPUT);
pinMode(level5, OUTPUT);
pinMode(level6, OUTPUT);
pinMode(level7, OUTPUT);
pinMode(level8, OUTPUT);
pinMode(level9, OUTPUT);
pinMode(level10, OUTPUT);
}
void loop() {
one();
reset();
ledka();
levelone();
leveltwo();
levelthree();
levelfour();
levelfive();
levelsix();
levelseven();
leveleight();
levelnine();
levelten();
}
void reset() {
buttonState = digitalRead(buttonPin);
Serial.println("Tlačítko");
Serial.println(buttonState);
if (buttonState == HIGH)
{
lastRead = 0;
delay(50);
}
}
void one() {
readValue = analogRead(potPin);
if ( lastRead > readValue )
{
readValue = lastRead;
}
else
{
lastRead = readValue;
}
Serial.println("read");
Serial.println(readValue);
}
void ledka() {
if (readValue < 550) {
digitalWrite(LEDButtR, HIGH);
digitalWrite(LEDButtG, LOW);
}
else {
digitalWrite(LEDButtR, LOW);
digitalWrite(LEDButtG, HIGH);
}
}
void levelone() {
if (readValue > 600)
{
digitalWrite(level1, HIGH);
}
else
{
digitalWrite(level1, LOW);
}
}
void leveltwo() {
if (readValue > 650)
{
digitalWrite(level1, LOW);
digitalWrite(level2, HIGH);
}
else
{
digitalWrite(level2, LOW);
}
}
void levelthree() {
if (readValue > 700)
{
digitalWrite(level2, LOW);
digitalWrite(level3, HIGH);
}
else
{
digitalWrite(level3, LOW);
}
}
void levelfour() {
if (readValue > 750)
{
digitalWrite(level3, LOW);
digitalWrite(level4, HIGH);
}
else
{
digitalWrite(level4, LOW);
}
}
void levelfive() {
if (readValue > 775)
{
digitalWrite(level4, LOW);
digitalWrite(level5, HIGH);
}
else
{
digitalWrite(level5, LOW);
}
}
void levelsix() {
if (readValue > 800)
{
digitalWrite(level5, LOW);
digitalWrite(level6, HIGH);
}
else
{
digitalWrite(level6, LOW);
}
}
void levelseven() {
if (readValue > 850)
{
digitalWrite(level6, LOW);
digitalWrite(level7, HIGH);
}
else
{
digitalWrite(level7, LOW);
}
}
void leveleight() {
if (readValue > 975)
{
digitalWrite(level7, LOW);
digitalWrite(level8, HIGH);
}
else
{
digitalWrite(level8, LOW);
}
}
void levelnine() {
if (readValue > 980)
{
digitalWrite(level8, LOW);
digitalWrite(level9, HIGH);
}
else
{
digitalWrite(level9, LOW);
}
}
void levelten() {
if (readValue > 1020)
{
digitalWrite(level9, LOW);
digitalWrite(level10, HIGH);
}
else
{
digitalWrite(level10, LOW);
}
}
Leonardo... so with leonardo I have bit of problem. I need to light up LED at every level and when LED is light press Key on PC. But if I got to level idk 5 I need to press only key 5 not key 1,2,3,4 and 5 if you know what I mean. Every level will have its sounds and I need to play only one at the time for highest level. Can you take a look at it guys. There is my code. It will fire every key and not "disable" those before and it will spam until reset. I need to stroke just once and not again. Hey guys do you got me? I hope so...
(its like virtual piano and when Relay1 is ON (LOW) it will press key1 only once.)
(if Relay1 and Relay2 is ON (both LOW) it will press only key2 once and so on...)
For leonardo I need press key once just for highest LED. Not "ASD" just D for level 3 LED you got me? I need to shift it somehow and not pres "AS". Each key will play its sound in PC and I need just You WON sound on 5th LED. My code will play all five tones before sound YOU WON. I need just the highest one and only once.
#include "Keyboard.h"
const int level1 = 2;
const int level2 = 3;
const int level3 = 4;
const int level4 = 5;
const int level5 = 6;
void setup() {
pinMode(2, INPUT);
pinMode(3, INPUT);
pinMode(4, INPUT);
pinMode(5, INPUT);
pinMode(6, INPUT);
Keyboard.begin();
}
void loop() {
if (digitalRead(level1) == LOW) {
Keyboard.press('A');
delay(10);
Keyboard.releaseAll();
}
if (digitalRead(level2) == LOW) {
Keyboard.write('S');
delay(10);
Keyboard.releaseAll();
}
if (digitalRead(level3) == LOW) {
Keyboard.write('D');
delay(10);
Keyboard.releaseAll();
}
if (digitalRead(level4) == LOW) {
Keyboard.write('F');
delay(10);
Keyboard.releaseAll();
}
if (digitalRead(level5) == LOW) {
Keyboard.write('G');
delay(10);
Keyboard.releaseAll();
}
}
Thanks