Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Name: funkcje.ino
- Created: 21.04.2019 19:17:01
- Author: Michał
- */
- //definiowanie pinów
- #define green 11
- #define orange 13
- #define odczyt A5 //definiowanie przetwornika ADC na pinie A5
- //diody niebieskie
- #define n1 7
- #define n2 6
- #define n3 5
- #define n4 4
- #define n5 3
- // the setup function runs once when you press reset or power the board
- void setup() {
- pinMode(green, OUTPUT);
- pinMode(orange, OUTPUT);
- Serial.begin(9600); //otwarcie transmisji portu COM
- }
- // the loop function runs over and over again until power down or reset
- void loop() {
- double wartosc; //zmienna przechowująca dane z przerwornika ADC
- double wartosc_skonwertowana; //zmienna pokazująca dane w V
- wartosc = analogRead(odczyt); //odczyt wartości z przetwornika
- blink(orange, 50); //mignięcie pomarańczowej diody po zapisaniu wartości do zmiennej
- //wyświetlanie zmierzonych wartości na monitorze portu COM
- Serial.print("Wartosc = ");
- Serial.print(wartosc);
- Serial.print("\n");
- wartosc_skonwertowana = convert_double(wartosc, 0, 1020, 0, 5); //konwersja na V
- //wyświetlanie skonwertowanej wartości na monitorze portu COM
- Serial.print(wartosc_skonwertowana);
- Serial.print(" [V]\n");
- setPWM(green, 5); //włączenie zielonej diody
- Serial.println(liczbadiod(wartosc_skonwertowana)); //Sprawdzanie poprawnego działania funkcji przeliczającej volty na liczbę diód
- //uruchomienie niebieskich diód na 2s
- switch (liczbadiod(wartosc_skonwertowana))
- {
- case 1: {
- set(n1);
- delay(2000);
- reset(n1);
- break;
- }
- case 2: {
- set(n1);
- set(n2);
- delay(2000);
- reset(n1);
- reset(n2);
- break;
- }
- case 3: {
- set(n1);
- set(n2);
- set(n3);
- delay(2000);
- reset(n1);
- reset(n2);
- reset(n3);
- break;
- }
- case 4: {
- set(n1);
- set(n2);
- set(n3);
- set(n4);
- delay(2000);
- reset(n1);
- reset(n2);
- reset(n3);
- reset(n4);
- break;
- }
- case 5: {
- set(n1);
- set(n2);
- set(n3);
- set(n4);
- set(n5);
- delay(2000);
- reset(n1);
- reset(n2);
- reset(n3);
- reset(n4);
- reset(n5);
- break;
- }
- default:
- Serial.println("FAIL");
- break;
- }
- setPWM(green, 0); //wyłączenie zielonej diody
- }
- //mapowanie double do int
- int liczbadiod(double val) {
- int liczba;
- if (val <= 1) {
- liczba = 1;
- }
- else if (val > 1 && val <= 2) {
- liczba = 2;
- }
- else if (val > 2 && val <= 3) {
- liczba = 3;
- }
- else if (val > 3 && val <= 4) {
- liczba = 4;
- }
- else if (val > 4 && val <= 5) {
- liczba = 5;
- }
- return liczba;
- }
- //włączenie diody
- //set(nazwa_wyjścia)
- void set(uint8_t nazwa) {
- digitalWrite(nazwa, HIGH);
- }
- //wyłączenie diody
- //reset(nazwa_wyjścia)
- void reset(uint8_t nazwa) {
- digitalWrite(nazwa, LOW);
- }
- //włączanie diody PWM
- //setPWM(nazwa_wyjścia, wartość_wypełnienia(0-255))
- void setPWM(uint8_t nazwa, int wartosc) {
- analogWrite(nazwa, wartosc);
- }
- //miganie diody
- //blink(nazwa_wyjścia, czas_świecenia)
- void blink(uint8_t nazwa, int przerwa) {
- digitalWrite(nazwa, HIGH); //włącza diodę
- delay(przerwa); //czas świecenia
- digitalWrite(nazwa, LOW); //wyłącza diodę
- }
- //miganie przygaszonej diody PWM
- //blinkPWM(nazwa_wejścia, wartość_wypełnienia(0-255), czas_świecenia)
- void blinkPWM(uint8_t nazwa, int wartosc, int przerwa) {
- analogWrite(nazwa, wartosc);
- delay(przerwa);
- analogWrite(nazwa, 0);
- }
- //funkcja konwertuje wartość z jednego zakresu na drugi
- //convert_double(wartość, dolna_granica_1, górna_granica_1, dolna_granica_2, górna_granica_2)
- //zwraca wynik w zmiennej typu double
- double convert_double(double val, double inmin, double inmax, double outmin, double outmax) {
- return((val - inmin)*(outmax - outmin) / (inmax - inmin) + outmin);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement