Skocz do zawartości

Kurs Arduino - #4 - Przetwornik ADC


Pomocna odpowiedź

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

@ceiem, a o jakie zamiany konkretnie Ci chodzi? Do wejścia analogowego powinnaś wychodzić z węzła między rezystorem, a fotorezystorem (na rysunku pomarańczowy przewód). Zasilanie i masę możesz zamienić. W tej chwili odczytujesz napięcie odłożone na rezystorze 1k (potencjał tego "pomarańczowego" węzła względem masy). Po zamianie + z - odczytywać będziesz napięcie na fotorezystorze.

  • Lubię! 1
Link do komentarza
Share on other sites

(edytowany)

A co się stanie jak pomarańczowy (idący do wejścia analogowego) zamienię z niebieskim lub czerwonym (idącymi do masy i zasilania)?

Edytowano przez ceiem
Link do komentarza
Share on other sites

W takim układzie prąd by płynął tylko przez jeden z tych dwóch elementów. Patrząc na rysunek to po zamianie niebieskiego z pomarańczowym prąd by tylko płynął przez fotorezystor, a przez rezystor nie. Na tej górnej nóżce rezystora 1k byłoby napięcie 0 V (potencjał masy). Zamieniając pomarańczowy z czerwonym- prąd płynie tylko przez rezystor 1k, a na dolnej nóżce fotorezystora jest napięcie zasilania 5V.

  • Lubię! 1
Link do komentarza
Share on other sites

zadanie 4.4

ja stworzyłem coś takiego

gdy dioda się zapala od razu wyświetla wartość napięcia

int ow=0; // otrymana wartosc
int prog=0; //prog wlaczenia swiatla
float nap=0; // zmienna napiecia
boolean wysl=false;

void setup() {
  Serial.begin(9600);
pinMode(8, OUTPUT);
}
void loop(){
  ow=analogRead (A5); //odczytanie wartosc z ADC
  prog=analogRead (A4);//odczytanie wartosc z ADC

  if (ow<prog){
    digitalWrite (8, HIGH);
    if (wysl== false){
      nap= ow* (5.0/1024.0);
      Serial.print (nap);
      wysl=true;
    }
  }
  else{
    digitalWrite(8,LOW);
    wysl=false;
  }
  delay(50);
}

przepraszam za chaos z kodem i moje skróty myślowe.

mam takie pytanie, mianowicie ile mniej więcej zajmuje nauka programowania żeby powiedzmy być w tym dobrym? wiem ze to zależy od predyspozycji każdego z nas ale zżera mnie ciekawość.

  • Lubię! 1
Link do komentarza
Share on other sites

@gibon witam na forum 🙂

23 godziny temu, gibon napisał:

mam takie pytanie, mianowicie ile mniej więcej zajmuje nauka programowania żeby powiedzmy być w tym dobrym? wiem ze to zależy od predyspozycji każdego z nas ale zżera mnie ciekawość.

Rozumiem chęć poznania odpowiedzi na to pytanie, ale realnie to nie ma chyba na nie dobrej odpowiedzi. Z nauką programowania jest jak z nauką języków - wszystko zależy od konkretnej osoby. Podczas nauki jakiegoś języka możesz biegle się nim posługiwać, a i tak cały czas będziesz się czegoś uczył. W programowaniu jest jeszcze ten "haczyk", że cały czas pojawiają się jakieś nowe układy, peryferia i biblioteki - można się uczyć cały czas 😉 Dużo zależy też od tego co dokładnie chcesz robić i jakie programy chcesz tworzyć. Dla jednych ten kurs będzie wystarczający, a dla innych będzie dopiero pierwszym etapem na drodze do bycia programistą.

Link do komentarza
Share on other sites

Cześć! Wykonuję  właśnie ćwiczenie ze zgadywaniem liczb. Z niewiadomych mi przyczyn po napisaniu programu pojawia mi się na dole "exit status 1  Błąd kompilacji dla płytki Arduino Uno".  Nie rozumiem tego kompletnie bo w samym programie nie pokazują  mi się  żadne błędy.  Pozdrawiam i bardzo  proszę  o pomoc.

#define zielona 8
#define zolta 9
#define czerwona 10
#define przycisk 11
#define potencjometr A5

int wylosowanaLiczba;
int Liczba;
byte szanse;
String podanaLiczba = "";
boolean START = true;

void setup() {
  Serial.begin(9600);
  pinMode(zielona,OUTPUT); //Przypisanie wyjś
  pinMode(zolta,OUTPUT);
  pinMode(czerwona,OUTPUT);
  pinMode(przycisk,INPUT_PULLUP);
}

void loop() {
  if (START = true) {
    digitalWrite(zielona,LOW);
    digitalWrite(zolta,LOW);
    digitalWrite(czerwona,LOW);
    
    Serial.println("Nacisnij przycisk i przekręć potencjometr");
    delay(50);
    while(digitalRead(przycisk) = HIGH);
  }

  wylosowanaLiczba = analogRead(potencjometr);
  Serial.println("Podaj liczbę od 0 do 1000");
  
  //while(Serial.available() = 0); //Czekamy na podanie liczby
  if (Serial.available() > 0) {
    podanaLiczba = Serial.readStringUntil('\n');
    Liczba = podanaLiczba.toInt();

    if ((wylosowanaLiczba - Liczba <= 50) && (wylosowanaLiczba - Liczba >= -50)){
    digitalWrite(zielona,HIGH); // zapal zieloną diodę
    
    Serial.println("Brawo odgadłeś liczbę");
    Serial.println("Jeżeli chcesz  zagrać jeszcze raz naciśnij przycisk");
    delay(50);

    while(digitalRead(przycisk) = HIGH);
    START = true;
    } else if (szanse > 0){
      digitalWrite(zolta,HIGH);

      Serial.println("Źle, podaj inną liczbę!");
      szanse--; //Odejmij szansę
      Serial.println("Posiadasz jeszcze tyle szans");
      Serial.println(szanse);
      START = false;
    } else if(szanse = 0){
      digitalWrite(czerwona,HIGH); //Zapal czerwoną diodę
      digitalWrite(zolta,LOW);
      Serial.println("Przegrałeś!");
      Serial.println("Jeżeli chcesz zagrać ponownie to naciśnij przycisk");
      delay(50);
      while(digitalRead(przycisk) = HIGH);
      START = true;
    }
    
  }

}

 

Link do komentarza
Share on other sites

@ZwiewnyTrzmiel witam na forum 🙂 

Ciężko coś powiedzieć, co na pewno rzuciło mi się w oczy to nieprawidłowy warunek:

if (START = true)

Tu trzeba zamienić na operator porównania ==, ale nie jest to powód do nieskompilowania kodu.

A możesz przekopiować cały wynik? Przycisk znajdziesz na pomarańczowym tle tak ja na screenshocie:

image.thumb.png.790e400f1ce51d0a3f8f4226387b7a98.png

  • Lubię! 1
Link do komentarza
Share on other sites

2 godziny temu, Gieneq napisał:

@ZwiewnyTrzmiel witam na forum 🙂 

Ciężko coś powiedzieć, co na pewno rzuciło mi się w oczy to nieprawidłowy warunek:


if (START = true)

Tu trzeba zamienić na operator porównania ==, ale nie jest to powód do nieskompilowania kodu.

A możesz przekopiować cały wynik? Przycisk znajdziesz na pomarańczowym tle tak ja na screenshocie:

image.thumb.png.790e400f1ce51d0a3f8f4226387b7a98.png

Albo po prostu

if (START)
{
}

Dla wyjaśnienia - if "wchodzi" w kod, jeśli to co w nawiasie nie wyjdzie 0, czyli jeśli bedzie START jako false to będzie 0 i "pomija", a jeśli jako true, to będzie 1 i wykonuje. Tak możesz na przyszłość uniknąć takich błędów 😜

Edytowano przez BananWszyscy
  • Pomogłeś! 1
Link do komentarza
Share on other sites

Dnia 13.05.2020 o 07:17, Gieneq napisał:

@ZwiewnyTrzmiel witam na forum 🙂 

Ciężko coś powiedzieć, co na pewno rzuciło mi się w oczy to nieprawidłowy warunek:


if (START = true)

Tu trzeba zamienić na operator porównania ==, ale nie jest to powód do nieskompilowania kodu.

A możesz przekopiować cały wynik? Przycisk znajdziesz na pomarańczowym tle tak ja na screenshocie:

image.thumb.png.790e400f1ce51d0a3f8f4226387b7a98.png

Zmieniłem operator na porównanie i nadal nic 😟 Błąd który mi wyrzuciło wygląda tak.

Cytat

 

Arduino:1.8.12 (Windows 8.1), Płytka:"Arduino Uno"

D:\Arduino\arduino-builder -dump-prefs -logger=machine -hardware D:\Arduino\hardware -tools D:\Arduino\tools-builder -tools D:\Arduino\hardware\tools\avr -built-in-libraries D:\Arduino\libraries -libraries C:\Users\Paweł\Documents\Arduino\libraries -fqbn=arduino:avr:uno -vid-pid=0X2341_0X0043 -ide-version=10812 -build-path C:\Users\PAWE~1\AppData\Local\Temp\arduino_build_107931 -warnings=none -build-cache C:\Users\PAWE~1\AppData\Local\Temp\arduino_cache_382737 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arduinoOTA.path=D:\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA-1.3.0.path=D:\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude.path=D:\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=D:\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc.path=D:\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino5.path=D:\Arduino\hardware\tools\avr -verbose C:\Users\Paweł\Documents\Arduino\sketch_may12a\sketch_may12a.ino
D:\Arduino\arduino-builder -compile -logger=machine -hardware D:\Arduino\hardware -tools D:\Arduino\tools-builder -tools D:\Arduino\hardware\tools\avr -built-in-libraries D:\Arduino\libraries -libraries C:\Users\Paweł\Documents\Arduino\libraries -fqbn=arduino:avr:uno -vid-pid=0X2341_0X0043 -ide-version=10812 -build-path C:\Users\PAWE~1\AppData\Local\Temp\arduino_build_107931 -warnings=none -build-cache C:\Users\PAWE~1\AppData\Local\Temp\arduino_cache_382737 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arduinoOTA.path=D:\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA-1.3.0.path=D:\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude.path=D:\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=D:\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc.path=D:\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino5.path=D:\Arduino\hardware\tools\avr -verbose C:\Users\Paweł\Documents\Arduino\sketch_may12a\sketch_may12a.ino
Using board 'uno' from platform in folder: D:\Arduino\hardware\arduino\avr
Using core 'arduino' from platform in folder: D:\Arduino\hardware\arduino\avr
Detecting libraries used...
"D:\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10812 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-ID:\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-ID:\\Arduino\\hardware\\arduino\\avr\\variants\\standard" "C:\\Users\\PAWE~1\\AppData\\Local\\Temp\\arduino_build_107931\\sketch\\sketch_may12a.ino.cpp" -o nul
Generating function prototypes...
"D:\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10812 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-ID:\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-ID:\\Arduino\\hardware\\arduino\\avr\\variants\\standard" "C:\\Users\\PAWE~1\\AppData\\Local\\Temp\\arduino_build_107931\\sketch\\sketch_may12a.ino.cpp" -o "C:\\Users\\PAWE~1\\AppData\\Local\\Temp\\arduino_build_107931\\preproc\\ctags_target_for_gcc_minus_e.cpp"
"D:\\Arduino\\tools-builder\\ctags\\5.8-arduino11/ctags" -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives "C:\\Users\\PAWE~1\\AppData\\Local\\Temp\\arduino_build_107931\\preproc\\ctags_target_for_gcc_minus_e.cpp"
Kompilowanie szkicu...
"D:\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10812 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-ID:\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-ID:\\Arduino\\hardware\\arduino\\avr\\variants\\standard" "C:\\Users\\PAWE~1\\AppData\\Local\\Temp\\arduino_build_107931\\sketch\\sketch_may12a.ino.cpp" -o "C:\\Users\\PAWE~1\\AppData\\Local\\Temp\\arduino_build_107931\\sketch\\sketch_may12a.ino.cpp.o"
In file included from C:\Users\PAWE~1\AppData\Local\Temp\arduino_build_107931\sketch\sketch_may12a.ino.cpp:1:0:

C:\Users\Paweł\Documents\Arduino\sketch_may12a\sketch_may12a.ino: In function 'void loop()':

D:\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:40:14: error: lvalue required as left operand of assignment

 #define HIGH 0x1

              ^

C:\Users\Paweł\Documents\Arduino\sketch_may12a\sketch_may12a.ino:29:36: note: in expansion of macro 'HIGH'

D:\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:40:14: error: lvalue required as left operand of assignment

 #define HIGH 0x1

              ^

C:\Users\Paweł\Documents\Arduino\sketch_may12a\sketch_may12a.ino:47:38: note: in expansion of macro 'HIGH'

D:\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:40:14: error: lvalue required as left operand of assignment

 #define HIGH 0x1

              ^

C:\Users\Paweł\Documents\Arduino\sketch_may12a\sketch_may12a.ino:63:38: note: in expansion of macro 'HIGH'

exit status 1
Błąd kompilacji dla płytki Arduino Uno.

 

 

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.