Reagiert der Fotowiderstand auf eine Led in Tinkercad?

Hallo,

Reagiert der Fotowiderstand auf eine Led in Tinkercad? Ich muss einen String kabellos von einem Arduino zum anderen schicken.

oben Sender und unten Empfänger

Der Sender schaltet beim Drücken des Knopfes die Leuchtiode ein. Dann wird, indem die Led bei 1 leuchtet und bei 0 nicht leuchtet ein decodierter String übertragen. Der Empfänger sollte dann diese Bits zu Bytes verarbeiten und wieder einen String auf dem seriellen Monitor anzeigen.

Sender:

// Server / Sender

#include<string.h>

const int pin = 4; // Leuchtiode - pin !!!

const int btn_input = 12;

bool allowWrite = false;

char txt[1000];

int txt_len;

String str;

void setup() {

 Serial.begin(9600);

 pinMode(pin, OUTPUT);

 pinMode(btn_input, INPUT);

}

void Decode(int *bit, char character) {

 for (int i = 0; i < 8; i++) bit[i] = ((character >> i) & 0x01);

}

void loop() {

 if (digitalRead(btn_input) == HIGH) {

  //Input des Strings

  Serial.print("Gib den String ein (es dauert ein wenig):");  

  while (Serial.available() == 0) {};

  str = Serial.readString();

  txt_len = str.length();

  str.toCharArray(txt, 1000);

  Serial.print(txt);

  allowWrite = true;

  delay(10);

  Serial.println("\nString wird gesendet...");

 }

 // Knopf gedrückt

 if (allowWrite) {

  digitalWrite(pin, 1);

  for (int i = 0; i < txt_len; i++) {

   char byte = txt[i];

   int bits[8];

   Decode(bits, byte);

   for (int x = 0; x < 8; x++) {

    digitalWrite(pin, bits[x]);

    delay(10);

   }

  }

  // am ende wird vom sender 111111 und noch 0 gesendet

  for (int z = 0; z < 7; z++) {

   digitalWrite(pin, 1);

   delay(10);

  }

  digitalWrite(pin, 0);

  allowWrite = false;

 }

}

Empfänger:

// Client / Empfänger

int start_signal = false;

void setup(){

  Serial.begin(9600);

  //pinMode(btn_input, INPUT);

}

char Encode(int b[8]){

  unsigned char c = 0;

  for (int i = 0; i < 8; ++i)

    if (b[i] == 1)

      c |= 1 << i;

  return c;

}

void loop(){

  if ((analogRead(A0) > 100) && (start_signal == false)){

    start_signal = true;

    delay(2); 

  }

  if (start_signal == true){

    int bits[9];

    for (int x = 0; x < 8; x++){

     if (analogRead(A0) > 100){

       bits[x] = 1;

     } else {

       bits[x] = 0;

     }

     delay(10);

    }

    //ende-überprüfung: am ende wird vom sender 111111 gesendet und dann noch eine 0

    if (bits[0] == 1 && bits[1] == 1 && bits[2] == 1 && bits[3] == 1 && bits[4] == 1 && bits[5] == 1 && bits[6] == 1) {      

      start_signal = false;

    }

    char c = Encode(bits);

    Serial.print(c);

  }

}

Bis jetzt hat die Übertragung mit Kabel funktioniert, die kabellose jedoch nicht.

Reagiert der Fotowiderstand auf eine Led in Tinkercad?
Computer, Technik, Programmieren, arduino, Code, Informatik, LED, Technologie, Arduino Uno

Meistgelesene Fragen zum Thema LED