Prośba o pomoc z uzupełnieniu małego projektu - Wersja do druku +- Arduino Polska Forum (https://forum.arduinopolska.pl) +-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino) +--- Dział: Programowanie w Arduino (https://forum.arduinopolska.pl/dzial-programowanie-w-arduino) +--- Wątek: Prośba o pomoc z uzupełnieniu małego projektu (/watek-pro%C5%9Bba-o-pomoc-z-uzupe%C5%82nieniu-ma%C5%82ego-projektu) |
Prośba o pomoc z uzupełnieniu małego projektu - pawwol - 01-05-2023 Witam Zaczynam przygodę z Arduino i studiuję początki. Mam jednak 1 temat. Wpadł mi gotowy program do wyników z matrycy 4x16. Program działa i zwraca dwie zmienne [i],[j] Potrzebuję wprowadzić do tego programu dodatkowy kod. 1. Wynik zmiennej [j] zamienić na liczbę binarną 2. Przesunąć liczbę binarną o 4 = "dodać 4 zera na końcu" 3. Zmienić poz. 2 na liczbę dziesiętną i dodać do niej zmienną [i] Coś takiego. [i] 6 [j] 4=100 (bin) 100(4x0) = 1000000 1000000 = 64 (bin) 64+[i] = 70 Wiem, że to jeszcze nie mój etap, ale wdzięczny będę za pomoc. Może kiedyś pomogę komuś z grupy. Kod aktualny int masterLines = 17; //Change here to the number of lines of your Master Layer int slaveLines = 5; //Change here to the number of lines of your Slave Layer int matrixMaster[] = {20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52}; //Pins the Master Layer int matrixSlave[] = {29, 31, 33, 35, 37 }; //pins the Slave Layer int scal; void setup() { Serial.begin(9600); Serial.println("Start"); //Start for(int i = 0; i < slaveLines; i++){ pinMode(matrixSlave[i], INPUT_PULLUP); } for(int i = 0; i < masterLines; i++){ pinMode(matrixMaster[i], OUTPUT); digitalWrite(matrixMaster[i], HIGH); } } void loop() { for(int i = 0; i < masterLines; i++) { digitalWrite(matrixMaster[i], LOW); for(int j = 0; j < slaveLines; j++) { if(digitalRead(matrixSlave[j]) == LOW) { Serial.print(j); Serial.print(","); Serial.println(i); delay(500); break; } } digitalWrite(matrixMaster[i], HIGH); } } RE: Prośba o pomoc z uzupełnieniu małego projektu - kaczakat - 01-05-2023 Żeby zrobić przesunięcie bitowe, pomnożyć czy zrobić jakiekolwiek inne działania arytmetyczne nie musisz zmieniać formatu liczb, bo w programie przechowywana jest ich wartość, a nie to co widzisz na ekranie. To programista decyduje, że typowo są one wyświetlane w formacie dziesiętnym (domyślnie i by taki efekt uzyskać nic szczególnego robić nie trzeba), binarnym, ósemkowym czy HEX. Obojętne jest też, czy w programie do obliczeń podasz liczbę w formacie dziesiętnym, czy innym wymienonym wcześniej, ale po prostu do innych niż dziesiętne trzeba to programowi dodatkowo zakomunikować. Przsunięcie bitowe to to samo co mnożenie lub dzielenie przez 2. https://pl.wikibooks.org/wiki/C/Operatory#Przesuni%C4%99cie_bitowe A na koniec wystarczy uzyskaną liczbę wydrukować z zaznaczeniem, że ma być binarnie: Serial.println(liczba,2); |