تمرین ۱۹ - ارتباط سریال

متن تمرین

اصلی

دو میکروکنترلر ATMEGA32 را از طریق واحد USART شبکه بندی کنید به نحویکه میکروی فرستنده نام و نام خانوادگی شما را با تاخیر ۵۰۰ میلی‌ثانیه به میکروی گیرنده ارسال کند و گیرنده آن را روی LCD نمایش دهد. (با و بدون استفاده از مکانیزم وقفه داخلی)

بازنویسی شده برای آردوینو UNO

دو برد Arduino UNO را از طریق واحد UART شبکه بندی کنید به نحویکه میکروی فرستنده نام و نام خانوادگی شما را با تاخیر ۵۰۰ میلی‌ثانیه به میکروی گیرنده ارسال کند و گیرنده آن را روی LCD نمایش دهد.

مدار

کد برنامه

فرستنده

/*
 * Assignment #19 - Sender
 *
 * Send a string with Serial (UART)
 *
 * The circuit:
 * Connect pin 1 (TX) of sender (this) Arduino
 * to pin 0 (RX) of reciver Arduino
 * Connect the ground of both Arduinos together
 *
 * https://mehsen.com/arduino/assignments/
 *
 * To the extent possible under law,
 * Mohsen Dastjerdi Zade (mehsen.com) has waived all copyright
 * and related or neighboring rights to Arduino Assignments.
 * https://creativecommons.org/publicdomain/zero/1.0/
 */


// the setup routine runs once when you press reset:
void setup() {
  // initialize serial (USART):
  Serial.begin(9600);
  // send string
  Serial.println("Mohsen Dastjedi Zade");
}

// the loop routine runs over and over again forever:
void loop() {
  
}


گیرنده

/*
 * Assignment #19 - Reciver
 *
 * Recive a string on serial (UART) and display it on LCD
 *
 * The circuit:
 * Connect pin 1 (TX) of sender Arduino
 * to pin 0 (RX) of reciver (this) Arduino
 * Connect the ground of both Arduinos together
 * LCD RS pin to digital pin 12
 * LCD Enable pin to digital pin 11
 * LCD D4 pin to digital pin 5
 * LCD D5 pin to digital pin 4
 * LCD D6 pin to digital pin 3
 * LCD D7 pin to digital pin 2
 * LCD R/W pin to ground
 * LCD VSS pin to ground
 * LCD VCC pin to 5V
 * 10K potentiometer:
 * ends to +5V and ground
 * wiper to LCD VO pin (pin 3) 
 *
 * https://mehsen.com/arduino/assignments/
 *
 * To the extent possible under law,
 * Mohsen Dastjerdi Zade (mehsen.com) has waived all copyright
 * and related or neighboring rights to Arduino Assignments.
 * https://creativecommons.org/publicdomain/zero/1.0/
 */

// include the character LCD library:
#include <LiquidCrystal.h>

// initialize LCD library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

// the setup routine runs once when you press reset:
void setup() {
  // initialize serial (UART):
  Serial.begin(9600);
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  lcd.cursor();
}

// the loop routine runs over and over again forever:
void loop() {
  
}

// SerialEvent occurs whenever a new data comes in the
// hardware serial RX.  This routine is run between each
// time loop() runs, so using delay inside loop can delay
// response.  Multiple bytes of data may be available.
void serialEvent() {
  while (Serial.available()) {
    // receive byte as a character
    char inChar = Serial.read();
    // print the character
    lcd.write(inChar);
  }
}