Skocz do zawartości
Komentator

Kurs Arduino - #4 - Przetwornik ADC

Pomocna odpowiedź

Użyłem do niego 3 baterie AA 1,5V

Możesz wyjaśnić ten fragment? Co dokładnie zasilasz z tych baterii?

Udostępnij ten post


Link to post
Share on other sites

piotr1990, a masy połączyłeś? Takie niestabilizowane zasilanie czujnika też raczej nie wpływa dobrze na pomiary...

Udostępnij ten post


Link to post
Share on other sites

Mase podłączyłem do baterii. Czyli anoda i katoda z baterii do czujnika i kabel sygnałowy do wejścia A5.

Udostępnij ten post


Link to post
Share on other sites

Czegoś tu nie rozumiem, zrób najlepiej schemat. Połączyłeś masę Arduino z masą baterii (podłączonej do czujnika)?

Udostępnij ten post


Link to post
Share on other sites

Problem już w sumie rozwiązałem. Po prostu baterie były podłączone do czujnika a jego kabel wyjściowy w porcie A5.

Teraz wszystko w arduino jest podłączone. Czy można podłączyć do arduino dodatkowe zasilanie czy 5V to max? Się zastanawiam czy można zasilić oprócz czujnika jakieś diody czy będę musiał używać tranzystorów do tego.

Udostępnij ten post


Link to post
Share on other sites
Problem już w sumie rozwiązałem. Po prostu baterie były podłączone do czujnika a jego kabel wyjściowy w porcie A5.

Czyli nie zrobiłeś tego, co czym pisałem - nie połączyłeś mas obud układów, tak?

Czy można podłączyć do arduino dodatkowe zasilanie czy 5V to max? Się zastanawiam czy można zasilić oprócz czujnika jakieś diody czy będę musiał używać tranzystorów do tego.

Co to znaczy dodatkowe zasilanie? Możesz układ zasilać tak jak jest to opisane w części o serwomechanizmach.

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Dokładnie ale teraz zrobiłem to jak na tym schemacie i podłączyłem zasilanie z płytki.

I dzięki tak o to mi chodziło.

__________

Komentarz dodany przez: Treker

Obraz poprawiłem - Treker, za brak reakcji na na uwagę: ostrzeżenie o wartości 1.

Udostępnij ten post


Link to post
Share on other sites

Treker,

Gratuluję, super kurs 🙂 Jednak natknąłem się na trudność. Do dziś właściwie wszystko było spoko dopóki nie zacząłem robić zadania 4.5 (gry)

Analizuję kod igor, ale coś nie mogę rozgryźć tego boolean , a dokładniej od_nowa=true , po drugim if.

Czy mógłbym prosić o pomoc i ewentualne wyjaśnienie co i jak z tymi zmiennymi prawda/fałsz? Bo wcześniej tego w kursie nie było i ciężko mi się samemu zabrać za to zadanie.

Nawet nie wiedziałem jak zmienić String na int 🙁 A to było tutaj bardzo ważne

Jeżeli jest ktoś, kto mógłby pomóc to bardzo proszę 🙂

Po wytłumaczeniu jakieś łatwe zadanko na sprawdzenie czy rozumiem mile widziane

Udostępnij ten post


Link to post
Share on other sites

MrShadow, zmienne boolean są takie same jak zwykłe. Tylko zamiast wartość np.: z zakresu 0-255 przyjmują prawdę/fałsz (1 lub 0). Jeśli nie czujesz zmiennych boolean, to możesz używać int'ów i zapisywać w nich tylko dwie wartości 1-prawda lub 0-fałsz. Będzie to mniej oszczędne pod względem miejsca, ale działanie będzie takie samo.

Z czasem bez problemu przejdziesz na boolean 😉

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Treker,

Super, nie pomyślałem o tym a to bardzo ułatwia całą sprawę 🙂 Dziękuję bardzo za pomoc

Udostępnij ten post


Link to post
Share on other sites

Treker, Bool zwykle ma 8 bitów szerokości, więc sam w sobie nie jest lepszy od int8_t. Natomiast oszczędność widać w tablicach (oraz vectorach itd.) gdze kompilator osiąga często ok. 1bit/zmienną.

Udostępnij ten post


Link to post
Share on other sites

Chumanista, zgadza się, ale nie chciałem się w to zagłębiać w kursie dla początkujących 🙂

Udostępnij ten post


Link to post
Share on other sites

Witam .

Chciałem sobie utrudnić życie .... i udało się😃

Czy mógłby ktoś sprawdzić mój program i napisać co jest nie tak ?

//definicja diod
#define zielona 5
#define czerwona 3
#define zlota 4
// definicja przycisku
#define klik 2
//definicje zmiennych
int odczyt;
int wpisana2;



int licznik = 0;


void setup() {
 // ustawienie pinów
pinMode(zielona,OUTPUT);
pinMode(czerwona ,OUTPUT);
pinMode(zlota,OUTPUT);
pinMode( klik,INPUT_PULLUP);
// uruchomienie transmisji szeregowej
Serial.begin(9600);

// wiadomosc początkowa 
Serial.println("<<<<<Ustaw Potencjometr>>>>>>");
Serial.println("<<<<<Wcisnij klawisz>>>>>");


}

void loop() {

   efekt_led();//funkcja startowa ledy

 if(digitalRead(klik)==LOW)//rozpoczynamy gre
 {
  delay (20);
 }

  if(digitalRead(klik)==LOW)
  {

    Serial.println("<<<<Gra rozpoczeta>>>>>");
    delay(100);
    Serial.println ("<<<< Masz 3 szanse aby zgadnac liczbe >>>>");
    delay(100);
    Serial.println("<<<< Mozesz pomylic sie o 50% >>>>");
    delay(30);
   // Serial.println(przeliczanie()); //test


    while(licznik<3) // dopuki masz 3 życia 
    {
   przeliczanie();// funkcja przeliczenia z adc
  delay(50);
      odbieranie();

      if (przeliczanie() <= 50 && odbieranie()>= -50)  // jeśli podana liczba jest +-50 równa odczytowi
       {
        Serial.println("<<<<Gratulacje>>>>");
        delay(700);
        Serial.println("----Wygrales----");
        digitalWrite(zielona,HIGH);
        digitalWrite(czerwona,LOW);
        digitalWrite(zlota,LOW);
      licznik = 0;
      }
      else// jesli nie
      {
        Serial.println("----Dawaj jeszcze Raz----");
        digitalWrite(zlota,HIGH);
        digitalWrite(czerwona,LOW);
        digitalWrite(zielona ,LOW);
        licznik = licznik +1;

      }


    }

    Serial.println("<<<<przegrales>>>>");
    digitalWrite(czerwona, HIGH);
    digitalWrite(zlota,LOW);
    digitalWrite(zielona,LOW);


 }


}

void efekt_led(void) // funkcja efektów led
{
 while(digitalRead(klik)==LOW);
 {
   int a = 3;
   int b = 100;
   for ( a=0; a<6; a++)
   { 
     digitalWrite(a ,HIGH);
     delay(b - a);
     digitalWrite(a,LOW);
     delay(b +a);

   }

 }
}

int przeliczanie(void)//funkcja przeliczająca 
{

 odczyt = analogRead(A5);

  return odczyt;
}



 int odbieranie(void)// funkcja odbioru z UART
 {
String wpisana;

   Serial.flush();


while(!Serial.available()); 
{// czekaj na dane z portu szeregowego

     }
     if(Serial.available() > 0)
  {
    wpisana = Serial.readStringUntil('\n');

   int(wpisana) = wpisana2;// zmiana typu z String na int

  }

  delay(5);
  return wpisana2; //wykonaj, jeśli dostępne dane
 }

Udostępnij ten post


Link to post
Share on other sites

Cahir, napisz w takim razie, co miał on z założenia robić i jakie są problemy 😉

Udostępnij ten post


Link to post
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!

Gość
Napisz odpowiedź...

×   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...