User Tools

Site Tools


smartway

Умная дорожка

На входе в школу ученик 1-го класса (неопытный школьник) выбирает на сенсорном экране дисплея фото своего преподавателя. На определенное время загорается дорожка из «бегущих огней» от местоположения ученика до класса.

Во время объявления пожарной тревоги загораются дорожки «бегущих огней» красного цвета от каждого класса до соответствующих аварийных выходов.

Схема

Код (arduino)

#include <SoftwareSerial.h>
 
int latchPin = 12;
int clockPin = 13;
int dataPin = 11;
 
int numOfRegisters = 2;
byte* registerState;
 
int val;
 
int gRxPin = 3;
int gTxPin = 2;
 
SoftwareSerial BTSerial(gRxPin, gTxPin);
 
void setup() {
  registerState = new byte[numOfRegisters];
    for (size_t i = 0; i < numOfRegisters; i++) {
    registerState[i] = 0;
  }
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
 
  pinMode(13, OUTPUT);
 
  BTSerial.begin(9600);
}
 
void loop() {
  if (BTSerial.available()) {
    val = BTSerial.read();
    // При символе "0" включаем красный
    if (val == '0') {
      RedWay();
    }
    // При символе "1" включаем зеленый
    if ( val == '1') {
      GreenWay();
    }
  }
}
 
 
// изменение состояния светодиода с номером pin
void regWrite(int pin, bool state){
  int reg = pin / 8;
  int actualPin = pin - (8 * reg);
  digitalWrite(latchPin, LOW);
  for (int i = 0; i < numOfRegisters; i++){
    byte* states = &registerState[i];
    if (i == reg){
      bitWrite(*states, actualPin, state);
    }
    shiftOut(dataPin, clockPin, MSBFIRST, *states);
  }
  digitalWrite(latchPin, HIGH);
}
 
void RedWay(){
  for (int i = 8; i < 15; i++){
    regWrite(i, HIGH);
    delay(100);
    regWrite(i, LOW);
  }
}
 
void GreenWay(){
  for (int i = 0; i < 7; i++){
    regWrite(i, HIGH);
    delay(100);
    regWrite(i, LOW);
  }
}

Код мобильного приложения (MIT App Inventor)

Вкладка Designer

Внешний вид приложенияОсновные компоненты приложения

Вкладка Blocks

smartway.txt · Last modified: by admin