Skocz do zawartości

Kurs Arduino - #10 - wykresy, liczby losowe, warunki cd.


Pomocna odpowiedź

1 godzinę temu, StefanekP napisał:

Jest dużo warsztatów i obozów z programowania(przynajmniej w mojej okolicy, np. politechnika warszawska organizuje dużo obozów naukowych

Hehe, no Ty chyba jesteś tu uprzywilejowany. Co stolica to stolica!

  • Lubię! 1

@StefanekP to pewnie zależy co dokładnie chcesz robić. W programiowaniu embedded na pewno znajomość działania czujników i czytanie datasheet jest ważne. Gdybyś chciał np robić automatykę domowa to i tak używa się głównie gotowców już więc bardziej przydaje się ich znajomość niż datasheet. Przynajmniej z tego co rozmawiam ze znajomymi.

Z projektami to zasadniczy problem jest taki że nawet gdy znajdziesz inspiracje w necie to gdy masz robić tylko dla siebie to się tak nie chcę. Dlatego w tym wypadku robienie projektów na studia czy szkole jest dużo bardziej motywujące. 

(edytowany)
10 minut temu, Dantey napisał:

Dlatego w tym wypadku robienie projektów na studia czy szkole jest dużo bardziej motywujące. 

Niestety, do studiów mam jeszcze parę lat. Nie wiem, co rozumiesz przez robienie projektów do szkoły, wątpię żeby to było możliwe. Pomijając już fakt, że w szkole już nie byłem w stanie wytrzymać i po 6 klasie się zapisałem na edukację domową. Ale myślę, że jakbym już miał jakiś fajny pomysł to mógłbym go zrealizować dla samej przyjemności z robienia.😃

Edytowano przez StefanekP
11 minut temu, StefanekP napisał:

Pomijając już fakt, że w szkole już nie byłem w stanie wytrzymać i po 6 klasie się zapisałem na edukację domową.

No nie mów, że w Warszawie nie można znaleźć fajnej szkoły! Fajnej i z kolegami, którzy też mieliby elektrozajawkę. To motywuje, jak jest jakaś mała rywalizacja.

52 minuty temu, trainee napisał:

No nie mów, że w Warszawie nie można znaleźć fajnej szkoły! Fajnej i z kolegami, którzy też mieliby elektrozajawkę. To motywuje, jak jest jakaś mała rywalizacja.

Może i można ale trzeba mieć farta. Poza tym elektroniką zacząłem się interesować dopiero jak się stamtąd wypisałem

 

@StefanekP no trudno. Masz po prostu większe wyzwanie przed sobą, musząc motywować się samemu. Będziesz od tego lepiej zahartowany. 🙂

A tak, to jak sam sugerowałeś z tymi warsztatami z programowania itp. Rozglądaj się, może trafi się coś z elektroniką, np. na uczelni pod opieką tamtejszych pracowników. W ostateczności, jak masz zapał, to możesz zaatakować uczelnię, znaleźć jakiegoś prowadzącego zajęcia i zaczepić, czy da się gdzieś zaczepić. Może eksternistycznie jakiś wykład odwiedzić? Na stronach uczelni pewnie możesz posprawdzać jakie są przedmioty, kto prowadzi, znaleźć adres mail tego ktosia.

  • Lubię! 1
3 godziny temu, StefanekP napisał:

@Dantey 

@Dustek, że mało kto w tym wieku interesuje się elektroniką to się zgadzam ale myślę że jest sporo osób interesujących się programowaniem. Jest dużo warsztatów i obozów z programowania(przynajmniej w mojej okolicy, np. politechnika warszawska organizuje dużo obozów naukowych, ale myślę, że w innych miejscach też).

Skupiałem się bardzo pod programowanie Arduino, ale to był mój błąd faktycznie - dużo młodych osób interesuje się programowaniem.

  • Lubię! 1
  • 4 tygodnie później...

568816443_wykresfotorezystorw.thumb.png.32ef09a9d24013947caf00a3e4bff43f.pngimage.thumb.png.a86d6d5c073483a437cc7254716888b8.png

void setup() {
  
  randomSeed(analogRead(A0)) ;
  Serial.begin(9600) ;
}
void loop() {

   int liczba = random(0,101) ;
   
   if(liczba < 10 || liczba > 90)
    Serial.println("zakres < 10 || > 90") ;
   
   if((liczba > 50) && (liczba >= 70 != liczba <= 85))
    Serial.println("zakres > 50 != 70-85") ; 
   
   if(liczba == 50 || liczba == 40 || liczba == 30 || liczba == 20)
    Serial.println("zakres 50 , 40 , 30 , 20") ;
   
   if((liczba >= 10 && liczba <= 40) || (liczba >= 60 && liczba <= 100))
    Serial.println("zakres 10 - 40 || 60 - 100") ;    

   Serial.print("\t\t WYLOSOWANA LICZBA : ") ;
   Serial.println(liczba) ;
   delay(1000) ;
}

 

I dotarłem na koniec rozdziału :] 

  • Lubię! 2
  • 10 miesiące później...

Witam wszystkich serdecznie.

Jest to mój pierwszy wpis na forum, więc na początku chcę podziękować Trekerowi, za kawał bardzo dobrej roboty. Kursy są naprawdę na wysokim poziomie, zestawy do kursów bardzo dobrze przygotowane, FULL profeska ;). Ukończyłem Elekronikę I i II oraz Arduino I. Jestem MEGA zadowolony z Twoich publikacji, tylko tak dalej.

Zadanie 10.3 (Trochę rozbudowałem 🙂 )

#define button 8
byte humanPlayer = 0;
byte compPlayer = 0;

void setup()
{
  pinMode(button, INPUT_PULLUP);
  Serial.begin(9600);
  randomSeed(analogRead(5));
  menu();
}

void loop()
{
  static byte diceValue1 = 0;
  static byte diceValue2 = 0;
  
  while(digitalRead(button) == HIGH)
  {
  }
    diceValue1 = random(1, 7);
    dice(diceValue1);
    Serial.println("\n\t\tTeraz MOJ rzut!! Wcisnij przycisk!!!\n");
    delay(100);
  

  while(digitalRead(button) == HIGH)
  {
  }
    delay(random(1000, 2000));
    diceValue2 = random(1, 7);
    dice(diceValue2);
    delay(100);

    if(diceValue1 > diceValue2)
    {
      Serial.println("\n\t\tWYGRALES!!!\n");
      humanPlayer ++;
      repeat();
    }
    else if(diceValue1 < diceValue2)
    {
      Serial.println("\n\t\tJA WYGRALEM!!!\n");
      compPlayer ++;
      repeat();
    }
    else if(diceValue1 == diceValue2)
    {
      Serial.println("\n\t\tMAMY REMIS!!!\n");
      repeat();
    }
}


void menu()
{
  Serial.println("\t\t\t*************************");
  Serial.println("\t\t\t**     GRA w kosci     **");
  Serial.println("\t\t\t*************************\n\n");
  Serial.println("\t\tWcisnij przycisk aby rzucic koscia!!!\n");
}

void repeat()
{
  Serial.print("\t\tStan GRY: ### TY ");
  Serial.print(humanPlayer);
  Serial.print(" ###   ### COMP ");
  Serial.print(compPlayer);
  Serial.println(" ###\n");
  Serial.println("\t\tWcisnij przycisk aby zagrac ponownie...\n\n\n\n\n\n\n\n\n");
  while(digitalRead(button) == HIGH)
  {
  }
  delay(100);
}

void dice(byte value)
{
  switch(value)
  {
    case 1:
    Serial.println("\t\t\t******************");
    Serial.println("\t\t\t*                *");
    Serial.println("\t\t\t*                *");
    Serial.println("\t\t\t*                *");
    Serial.println("\t\t\t*       **       *");
    Serial.println("\t\t\t*                *");
    Serial.println("\t\t\t*                *");
    Serial.println("\t\t\t*                *");
    Serial.println("\t\t\t******************");
    break;

    case 2:
    Serial.println("\t\t\t******************");
    Serial.println("\t\t\t*                *");
    Serial.println("\t\t\t*       **       *");
    Serial.println("\t\t\t*                *");
    Serial.println("\t\t\t*                *");
    Serial.println("\t\t\t*                *");
    Serial.println("\t\t\t*       **       *");
    Serial.println("\t\t\t*                *");
    Serial.println("\t\t\t******************");
    break;
    
    case 3:
    Serial.println("\t\t\t******************");
    Serial.println("\t\t\t*                *");
    Serial.println("\t\t\t*   **           *");
    Serial.println("\t\t\t*                *");
    Serial.println("\t\t\t*       **       *");
    Serial.println("\t\t\t*                *");
    Serial.println("\t\t\t*           **   *");
    Serial.println("\t\t\t*                *");
    Serial.println("\t\t\t******************");
    break;
    
    case 4:
    Serial.println("\t\t\t******************");
    Serial.println("\t\t\t*                *");
    Serial.println("\t\t\t*   **      **   *");
    Serial.println("\t\t\t*                *");
    Serial.println("\t\t\t*                *");
    Serial.println("\t\t\t*                *");
    Serial.println("\t\t\t*   **      **   *");
    Serial.println("\t\t\t*                *");
    Serial.println("\t\t\t******************");
    break;
    
    case 5:
    Serial.println("\t\t\t******************");
    Serial.println("\t\t\t*                *");
    Serial.println("\t\t\t*   **      **   *");
    Serial.println("\t\t\t*                *");
    Serial.println("\t\t\t*       **       *");
    Serial.println("\t\t\t*                *");
    Serial.println("\t\t\t*   **      **   *");
    Serial.println("\t\t\t*                *");
    Serial.println("\t\t\t******************");
    break;
    
    case 6:
    Serial.println("\t\t\t******************");
    Serial.println("\t\t\t*                *");
    Serial.println("\t\t\t*   **      **   *");
    Serial.println("\t\t\t*                *");
    Serial.println("\t\t\t*   **      **   *");
    Serial.println("\t\t\t*                *");
    Serial.println("\t\t\t*   **      **   *");
    Serial.println("\t\t\t*                *");
    Serial.println("\t\t\t******************");
    break;
  }
}

Teraz biorę się za Arduino II , myślę że już jestem gotowy.

Pozdrawiam 🙂

  • Lubię! 1

Zad. 10.4


void setup()
{
  pinMode(7, INPUT_PULLUP);
  Serial.begin(9600);
  randomSeed(analogRead(A0));
}

void loop()
{
  Serial.print("\tWcisnij przycisk aby wylosowac liczbe z zakresu 0-100:\t");

  while(digitalRead(7) == HIGH)
  {
  }

  byte liczba = random(101);
  Serial.println(liczba);
  Serial.println("\n\n");
  
  Serial.print("\tZakres (10 > x > 90)                    ");
  Serial.println(warunek1(liczba));

  Serial.print("\tZakres (50 < x != (70-85)               ");
  Serial.println(warunek2(liczba));

  Serial.print("\tZakres (x = 20, 30, 40 lub 50)          ");
  Serial.println(warunek3(liczba));

  Serial.print("\tZakres (10 <= x <= 40 lub 60 <= x <=100)");
  Serial.println(warunek4(liczba)); 
  
  delay(200);
}

String warunek1(byte liczba)
{
  if(liczba < 10 || liczba > 90)
  {
    return "\t\tWartosc miesci sie w zakresie.\n\n";
  }
  else
  {
    return "\t\tWartosc poza zakresem.\n\n";
  }
}

String warunek2(byte liczba)
{
  if(liczba > 50 && liczba != (liczba >= 70 && liczba <= 85))
  {
    return "\t\tWartosc miesci sie w zakresie.\n\n";
  }
  else
  {
    return "\t\tWartosc poza zakresem.\n\n";
  }
}

String warunek3(byte liczba)
{
  if(liczba == 20 || liczba == 30 || liczba == 40 || liczba == 50)
  {
    return "\t\tWartosc miesci sie w zakresie.\n\n";
  }
  else
  {
    return "\t\tWartosc poza zakresem.\n\n";
  }
}

String warunek4(byte liczba)
{
  if((liczba >= 10 && liczba <= 40) || (liczba >= 60 && liczba <= 100))
  {
    return "\t\tWartosc miesci sie w zakresie.\n\n";
  }
  else
  {
    return "\t\tWartosc poza zakresem.\n\n";
  }
}

 

  • Lubię! 1
  • 2 tygodnie później...

Udało się! Kurs Arduino poziom I zakończony pozytywnie ✅

Gdyby ktoś potrzebował pomocy, poniżej podrzucam własne spostrzeżenia oraz działające kody programów do zadań domowych 😉

1️⃣ Zadanie domowe 10.1

214120475_Wykres10.1.thumb.jpg.d160584a852e90ef948f5bb12695bb89.jpg

int odczytanaWartosc_L = 0;
int odczytanaWartosc_P = 0;

void setup() {
  Serial.begin(9600);
}

void loop() {
  odczytanaWartosc_L = analogRead(A5);
  odczytanaWartosc_P = analogRead(A4);

  Serial.print(odczytanaWartosc_L);
  Serial.print("\t");
  Serial.print(odczytanaWartosc_P);
  Serial.println("");
}

2️⃣ Zadanie domowe 10.2

Wpisując stałą wartość, zamiast ziarna odczytywanego z wejścia analogowego, często dochodzi do otrzymania identycznego ciągu wartości losowych ale nie za każdym razem 📊

3️⃣ Zadanie domowe 10.3

Elektroniczna 6-cio stronna kostka do gry. Idealne rozwiązanie na planszówkowy wieczór 🎲

#define przycisk 8

void setup() {
  pinMode(przycisk, INPUT_PULLUP);
  
  Serial.begin(9600);
  randomSeed(analogRead(0));

  Serial.println("*** Elektroniczna 6-cio stronna kosta do gry ***");
  Serial.println();
}

void loop() {
  Serial.println("Nacisnij przycisk");
  
  while (digitalRead(przycisk) == HIGH) {} //Czekaj do momentu wcisnięcia przycisku
  delay(50);
  
  Serial.println("Wylosowana liczba to:");
  Serial.println(random(1, 7));            //Kostka 6-cio stronna
  Serial.println();
  delay(500);
}

4️⃣ Zadanie domowe 10.4

int liczba = 0;

void setup() {
  Serial.begin(9600);
  randomSeed(analogRead(0));
  Serial.println("Losowanie wartosci z zakresu od 0 do 100");
  Serial.println();
}

void loop() {
  int liczba = random(0, 101); //Wartosc z zakresu 0 - 100

  Serial.println(liczba);
  delay(2000);

  if (liczba < 10 || liczba > 90) {
    Serial.println("Wylosowana wartosc:");
    Serial.println("- jest mniejsza od 10 lub wieksza od 90");
    Serial.println();
    delay(2000);
  } else if ((liczba > 50) && (liczba < 70 || liczba > 85)) {
    Serial.println("Wylosowana wartosc:");
    Serial.println("- jest wieksza od 50 ale nie miesci sie w przedziale 70 - 85");
    Serial.println();
    delay(2000);
  } else if (liczba == 50 || liczba == 40 || liczba == 30 || liczba == 20) {
    Serial.println("Wylosowana wartosc:");
    Serial.println("- jest rowna 50, 40, 30, lub 20");
    Serial.println();
    delay(2000);
  } else if ((liczba > 10 && liczba < 40) || (liczba > 60 && liczba < 100)) {
    Serial.println("Wylosowana wartosc:");
    Serial.println("- miesci sie w zakresie od 10 do 40 lub od 60 do 100");
    Serial.println();
    delay(2000);
  } else {
    Serial.println("Wylosowana wartosc:");
    Serial.println("- nie miesci sie w zadnym z przyjetych wariantow");
    Serial.println();
    delay(2000);
  }
}
Dnia 6.05.2023 o 12:15, Wejmon napisał:

Udało się! Kurs Arduino poziom I zakończony pozytywnie ✅

Gratulacje 🙂 Zachęcam do lektury kolejnego kursu z tej serii - będziesz mógł sprawdzić jak idzie Ci podczas tworzenia jeszcze bardziej zaawansowanych projektów.

  • Lubię! 1
  • 8 miesiące później...
  • 6 miesiące później...

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...