Semnalizator pentru biciclisti

Introducere

Biciclistii sunt foarte vulnerabili in trafic. Cel mai intalnit moment in care sunt in cel mai mare risc este atunci cand incearca sa isi schimbe directia de mers. De aceea, m-am gandit la un semnalizator pe spatele acestora care sa indice dinamic directia de mers, printr-o animatie a sagetii care arata directia.

Descriere generală

Piese folosite:

  • placuta arduino
  • 3 butoane pentru semnalizarea directiei
  • matrice 8×8 de leduri
  • cabluri de legatura
  • potentiometru pentru schimbarea vitezei animatiei
  • cablu de alimentare
  • lcd pentru a arata biciclistului direcita

Biciclistul se foloseste de cele 3 butoane sa selecteze directia in care se va deplasa. Cu ajutorul potentiometrului variaza viteza animatiei sagetii. Sageata va arata directia de deplasare, iar pe ecranul LCD se va afisa in cuvinte.

Schema Bloc

Hardware Design

Piese folosite:

  • placuta arduino
  • 3 butoane pentru semnalizarea directiei
  • matrice 8×8 de leduri
  • cabluri de legatura
  • potentiometru pentru schimbarea vitezei animatiei
  • cablu de alimentare
  • lcd pentru a arata biciclistului direcita

Schema in Eagle

Software Design

Tool-uri folosite

  • Eagle pentru realizarea schemei electrice
  • Arduino IDE
  • TinkerCAD pentru testarea anumitor functionalitati inainte de a veni piesele

Biblioteci folosite

  • LedControl.h
  • LiquidCrystal_I2C.h

Cod

Setup + initializari de variabile

  • am facut cateva initializari, cum ar fi setarea pinilor pentru butoane, LCD, matrice leduri, potentiometru.
  • initializarea mesajelor care urmau sa fie afisate pe LCD.
  • initializarea matricelor afisate pe matricea de leduri ( variabila arrows ).
  • initializarea LCD-ului si a LedControl-ului.
  • in setup am facut setez pinii si valorile initiale ale lcd-ului si a ledControl-ului.
  • setez variabilele pentru timer si prescaler.

Functia printByte

  • Pentru un array de bytes, setez fiecare linie din matricea de leduri cu valoarea d ela pozitia respectiva. Ex.: linie 0 are valoarea object[0], unde object este parametrul de tip byte[].

Functia printMessage

  • primeste ca parametru un mesaj.
  • afiseaza mesajul pe lcd dupa ce se seteaza cursorul la 0, 0.

Timerul

  • aici se afla logica jocului.
  • in variabila offset retin starea la care se afla sageata acum, pentru a putea genera animatia.
  • aceasta poate lua valori doar de la 0 la 7 ( inclusiv ), deoarece sunt 8 randuri de leduri.
  • afisez matricea cu functia printByte cu parametrul arrows[directionToMove][offset]. offset pentru starea curenta si directionToMove pentru directia de miscare a biciclistului.
  • iau valoarea potentiometrului pentru a regla viteza animatiei matricei.
  • am considerat valorile sa fie intre 5 si 1000.
  • pentru modificarea vitezei, schimb valoarea lui OCR1A.
  • acesta va lua valori intre 3000 si 10000 - 11000.

Functia readButtonInput()

  • citeste valorile celor 3 butoane.
  • se face o verificare pentru a afla directia in care se va misca biciclistul.

Functia loop()

  • se citeste valoarea butoanelor.
  • daca s-a schimbat optiunea de ultima data, atunci fac update la mesajul care se afiseaza pe lcd.

Rezultate Obţinute

Concluzii

A fost un proiect interesant. Cu ajutorul laboratoarelor am reusit sa ma misc foarte repede, fara a fi nevoie de multe tutoriale pe youtube. Proiectul nu este greu de implementat, insa am incercat sa cuprind cat mai multe dintre laboratoare.

Download

Jurnal

  • 28 aprilie - Alegerea Proiectului si scrierea paginii wiki
  • 3 mai - Finalizarea proiectului
  • 8 mai - Finalizarea paginii Wiki
  • 10 mai - Scriere Readme
  • 19 mai - Prezentare si rectificare erori
  • 26 mai - Ultima prezentare
  • 27 mai - Finalizare

Bibliografie/Resurse

pm/prj2022/cstan/semnalizator_pentru_biciclisti.txt · Last modified: 2022/05/27 20:12 by andrei.dumitrescu00
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0