Hello Arduino community, am currently doing my final year project on a guidance system which uses LEDs.for the transmission section I have 5 pairs of LEDs, each pair representing one transmitter, one LED is for setting up the communication, the other led is for sending data.Here is my transmitter code(it works perfectly, but I could use a little help incorporating the mills function)
int led2pin = 2;
int led3pin = 3;
int led4pin =4;
int led5pin=5;
int led6pin = 6;
int led7pin = 7;
int led8pin =8;
int led9pin=9;
int led10pin =10;
int led11pin=11;
int delayTime = 50;
char value;
String values;
String stringValues;
int zerosLeft;
String zeros;
int length;
boolean shouldSend;
void setup() {
pinMode(led2pin,OUTPUT);
pinMode(led3pin, OUTPUT);
pinMode(led4pin, OUTPUT);
pinMode(led5pin, OUTPUT);
pinMode(led6pin, OUTPUT);
pinMode(led7pin, OUTPUT);
pinMode(led8pin, OUTPUT);
pinMode(led9pin, OUTPUT);
pinMode(led10pin, OUTPUT);
pinMode(led11pin,OUTPUT);
}
void loop()
{ tx1();
tx2();
tx3();
tx4();
tx5();
}
void tx1(){
value ='a';
// Convert ASCII to binary
zerosLeft = 8 - String(value, BIN).length();
for (int i = 0; i < zerosLeft; i++) {
zeros = zeros + "0";
}
stringValues = stringValues + String(value);
// Build string
values = values + zeros + String(value, BIN);
zeros = "";
delay(300);
if (values != "") {
length = values.length();
shouldSend = true;
if (shouldSend) {
// OOK modulation
for (int i = 0; i < length; i++) {
digitalWrite(led3pin, HIGH);
if (i != length - 1) {
if (values.charAt(i) == '0') {
digitalWrite(led2pin, LOW);
delay(delayTime);
}
else if (values.charAt(i) == '1') {
digitalWrite(led2pin, HIGH);
delay(delayTime);
}
}
else {
// Turn off at the end
if (values.charAt(i) == '0') {
digitalWrite(led2pin, LOW);
delay(delayTime);
}
else if (values.charAt(i) == '1') {
digitalWrite(led2pin, HIGH);
delay(delayTime);
digitalWrite(led2pin, LOW);
}
}
}
// Reset variables
values = "";
stringValues = "";
digitalWrite(led3pin, LOW);
shouldSend = false;
}
}
}
void tx2(){
value = 'b';
// Convert ASCII to binary
zerosLeft = 8 - String(value, BIN).length();
for (int i = 0; i < zerosLeft; i++) {
zeros = zeros + "0";
}
stringValues = stringValues + String(value);
// Build string
values = values + zeros + String(value, BIN);
zeros = "";
delay(250);
if (values != "") {
length = values.length();
shouldSend = true;
if (shouldSend) {
// OOK modulation
for (int i = 0; i < length; i++) {
digitalWrite(led5pin, HIGH);
if (i != length - 1) {
if (values.charAt(i) == '0') {
digitalWrite(led4pin, LOW);
delay(delayTime);
}
else if (values.charAt(i) == '1') {
digitalWrite(led4pin, HIGH);
delay(delayTime);
}
}
else {
// Turn off at the end
if (values.charAt(i) == '0') {
digitalWrite(led4pin, LOW);
delay(delayTime);
}
else if (values.charAt(i) == '1') {
digitalWrite(led4pin, HIGH);
delay(delayTime);
digitalWrite(led4pin, LOW);
}
}
}
// Reset variables
values = "";
stringValues = "";
digitalWrite(led5pin, LOW);
shouldSend = false;
}
}
}
void tx3(){
value = 'c';
// Convert ASCII to binary
zerosLeft = 8 - String(value, BIN).length();
for (int i = 0; i < zerosLeft; i++) {
zeros = zeros + "0";
}
stringValues = stringValues + String(value);
// Build string
values = values + zeros + String(value, BIN);
zeros = "";
delay(200);
if (values != "") {
length = values.length();
shouldSend = true;
if (shouldSend) {
// OOK modulation
for (int i = 0; i < length; i++) {
digitalWrite(led7pin, HIGH);
if (i != length - 1) {
if (values.charAt(i) == '0') {
digitalWrite(led6pin, LOW);
delay(delayTime);
}
else if (values.charAt(i) == '1') {
digitalWrite(led6pin, HIGH);
delay(delayTime);
}
}
else {
// Turn off at the end
if (values.charAt(i) == '0') {
digitalWrite(led6pin, LOW);
delay(delayTime);
}
else if (values.charAt(i) == '1') {
digitalWrite(led6pin, HIGH);
delay(delayTime);
digitalWrite(led6pin, LOW);
}
}
}
// Reset variables
values = "";
stringValues = "";
digitalWrite(led7pin, LOW);
shouldSend = false;
}
}
}void tx4(){
value = 'd';
// Convert ASCII to binary
zerosLeft = 8 - String(value, BIN).length();
for (int i = 0; i < zerosLeft; i++) {
zeros = zeros + "0";
}
stringValues = stringValues + String(value);
// Build string
values = values + zeros + String(value, BIN);
zeros = "";
delay(150);
if (values != "") {
length = values.length();
shouldSend = true;
if (shouldSend) {
// OOK modulation
for (int i = 0; i < length; i++) {
digitalWrite(led9pin, HIGH);
if (i != length - 1) {
if (values.charAt(i) == '0') {
digitalWrite(led8pin, LOW);
delay(delayTime);
}
else if (values.charAt(i) == '1') {
digitalWrite(led8pin, HIGH);
delay(delayTime);
}
}
else {
// Turn off at the end
if (values.charAt(i) == '0') {
digitalWrite(led8pin, LOW);
delay(delayTime);
}
else if (values.charAt(i) == '1') {
digitalWrite(led8pin, HIGH);
delay(delayTime);
digitalWrite(led8pin, LOW);
}
}
}
// Reset variables
values = "";
stringValues = "";
digitalWrite(led9pin, LOW);
shouldSend = false;
}
}
}void tx5(){
value = 'e';
// Convert ASCII to binary
zerosLeft = 8 - String(value, BIN).length();
for (int i = 0; i < zerosLeft; i++) {
zeros = zeros + "0";
}
stringValues = stringValues + String(value);
// Build string
values = values + zeros + String(value, BIN);
zeros = "";
delay(200);
if (values != "") {
length = values.length();
shouldSend = true;
if (shouldSend) {
// OOK modulation
for (int i = 0; i < length; i++) {
digitalWrite(led11pin, HIGH);
if (i != length - 1) {
if (values.charAt(i) == '0') {
digitalWrite(led10pin, LOW);
delay(delayTime);
}
else if (values.charAt(i) == '1') {
digitalWrite(led10pin, HIGH);
delay(delayTime);
}
}
else {
// Turn off at the end
if (values.charAt(i) == '0') {
digitalWrite(led10pin, LOW);
delay(delayTime);
}
else if (values.charAt(i) == '1') {
digitalWrite(led10pin, HIGH);
delay(delayTime);
digitalWrite(led10pin, LOW);
}
}
}
// Reset variables
values = "";
stringValues = "";
digitalWrite(led11pin, LOW);
shouldSend = false;
}
}
}