Váci Robotika Labor

User info

Welcome, Guest! Please login or register.


You are here » Váci Robotika Labor » Haladó csoport (csütörtök) » Tananyagok


Tananyagok

Posts 1 to 23 of 23

1

Üdv minden régi és új tagnak!

Ahogyan megbeszéltük, újraindítom a fórumot, hogy az aktuális témák könnyebben követhetőek legyenek a csütörtöki haladó csoport tagjainak.

0

2

7 szegmenses kijelző

https://lastminuteengineers.com/wp-content/uploads/2018/06/7-Segment-Internal-LED-Formation-Structure-and-Pinout.png

Összesen 10db láb (alul felül 5-5db), ebből a középső felül és alul is a COM (common=közös) ami nekünk a GND. Minden „pálcika” tulajdonképpen egy led, amit 220Ohm-os ellenálláson keresztül 5V tápra (labortápra) vagy az Arduino kimeneti lábaira köthetünk.

1.) Állítsunk be 5.0V-ot a labortápon, és a pozitív (piros) vezetékre kössünk egy 220Ohm-os ellenállást, majd onnan egy krokodil csipeszt. A labortáp fekete (GND) vezetékét csatlakoztassuk a felső vagy alsó COM (common / GND) lábra, majd az ellenállásról jövő vezetékkel próbáljuk végig a megmaradt lábakat. Látnunk kell, hogy melyik szegmens („pálcika”) kezd el világítani – hasonlítsuk össze a fenti rajzzal!

2.) Csatlakoztassunk mind a 8 kivezetéshez 1-1 ellenállást, majd ezen át az Arduino 2-es lábára kössük, az „a” pálcikához tartozó lábat, a 3-asra a „b”-t stb… az utolsó a „dot” (pont) lesz, ami a 9-es lábra kell, hogy kerüljön. Valamelyik COM lábat kössük az Arduino GND-jére.

https://lastminuteengineers.com/wp-content/uploads/2018/07/Project-Working-and-Interfacing-Seven-Segment-Display-with-Arduino.jpg

0

3

CD4511 vezérlő IC

Az IC lényege, hogy 4db bemenettel tudjuk vezérelni a 7 szegmenses kijelzőnket. Nem kell minden egyes "pálcikához" egy-egy lábat lefoglalni az Arduino-n.
https://www.arduinoecia.com.br/wp-content/uploads/2016/08/Pinagem_CD4511.png

Ezután az alábbi táblázat alapján tudunk bármilyen számot megjeleníteni:
https://www.arduinoecia.com.br/wp-content/uploads/2016/08/Tabela_BCD_CD4511_Display_7_segmentos.png

A bekötés rajz:
https://www.arduinoecia.com.br/wp-content/uploads/2016/08/Circuito_CD4511_Arduino_Display_7_segmentos_bb-1024x488.png

0

4

4 digites 7 szegmenses kijelző

http://www.circuitbasics.com/wp-content/uploads/2017/05/Arduino-7-Segment-Tutorial-4-Digit-Display-Pin-Diagram-300x172.png

Az A-G lábak ugyan úgy működnek mint az egy digites kivitelnél, de nem 1 hanem 4db „common” lábunk van (D1-D4) és csak az fog világítani amelyik common láb a GND-re csatlakozik.

Építsük meg a véletlenszám generátorunkat úgy, hogy mind a 4 szám egymás után véletlenszámot adjon!

0

5

Shift OUT - 74HC595

Arduino leírás

https://lastminuteengineers.com/wp-content/uploads/2018/07/74HC595-Shift-Register-Working.gif

http://sk.uploads.im/t/BEMR6.jpg

Arduino kód:

//74HC595 Shift out IC lábai:
int latchPin = 8; //ST_cp láb
int clockPin = 12; //SH_CP láb
int dataPin = 11; // DS láb
//a "szam" változóban tároljuk a kapott számot:
byte szam;

void setup() {
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
  Serial.begin(9600);
  Serial.print("Szam: ");
}

void loop() {
    if (Serial.available()>0) {
     szam=Serial.parseInt(); 
     digitalWrite(latchPin, LOW);
     shiftOut(dataPin, clockPin, MSBFIRST, szam); 
     digitalWrite(latchPin, HIGH);
     Serial.print(szam);
     Serial.print(" Binaris formaban: ");
     Serial.println(szam,BIN);
     Serial.print("Szam: ");
    }
}

A program bekér egy számot (0 és 255 között tudja kezelni) és ezt a számot bináris formában jeleníti meg a 8db led-en. (ahol világít ott 1-es, ahol nem ott 0-a az érték)

0

6

Figyelem!

A szeptember 26.-i óra ELMARAD!
(aki tudja adja tovább)

A következő alkalom október 3.

0

7

LCD kijelző kelezése

A kijelzőt és az Arduino-t alap esetben 16db vezetékkel kellene összekötni és közvetlenül vezérelni DE ha az I2C kommunikációt használjuk akkor összesen csak 4db vezetékre lesz szükségünk:
- VCC (5V)
- GND (GND)
- SCL (A5)
- SDA (A4)

https://halckemy.s3.amazonaws.com/uploads/attachments/679767/fritzing-sketch-for-lcd1602-and-arduino_VNXIWTehlV.jpg

Az ilyen bekötéshez szükségünk van egy könyvtárra (library) amit telepíteni kell az Arduino-ba. Ennek legegyszerűbb módja, hogy bemásoljuk a Documentumok/Arduino/Library mappába a következő fájl teljes tartalmát:
LCD

Ezután a kijelző már elérhető a 0X27-es címen.
Próbáljuk ki a következő kódot:

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,16,2);

void setup()
{
  lcd.init();
  lcd.backlight(); 
}

void loop()

  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Hello, mindenki!");
  delay(1000);
  lcd.setCursor(3,1);
  lcd.print("Robotika!");
  delay(1000);
}

0

8

Korábban csináltunk már "tolatóradart" ami kiírta a mért távolságot a soros monitorra. Ennek a kódja a következő:

  int trigPin = 11;
  int echoPin = 12;
 
  long visszhang;
  int tavolsag;
 
  void setup() {
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  Serial.begin(9600);
}

void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);

digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

visszhang = pulseIn(echoPin, HIGH);

tavolsag= visszhang*0.034/2;

Serial.print("Tavolsag: ");
Serial.println(tavolsag);
}

Feladat: alakítsuk úgy át a programot (és a bekötést), hogy a mért értéket az LCD kijelzőre írja ki!

0

9

// Tolatoradar, villogasmentesen:
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,16,2);

  int trigPin = 11;
  int echoPin = 12;
 
  long visszhang;
  int tavolsag;
  int elozo;
 
void setup()
{
  lcd.init();
  lcd.backlight();
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Tavolsag:");
}

void loop()

digitalWrite(trigPin, LOW);
delayMicroseconds(2);

digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

visszhang = pulseIn(echoPin, HIGH);

tavolsag= visszhang*0.034/2;
 
 
   if (elozo!=tavolsag) {
    lcd.setCursor(9,0);
    lcd.print("          ");
    lcd.setCursor(9,0);
    lcd.print(tavolsag);
    elozo=tavolsag;
    delay(100);
  }
}

0

10

Kedves András!
A fórumban nem találtam a tolatóradarról rajzot. Ki lehet találni a programból, de ha egyszerűen megoldható, jó lenne, ha a kapcsolási rajzot be tudnád tenni.
Köszönöm szépen.

0

11

Az ultrahangos modul bekötése nagyon egyszerű:
Csak a Trig és az Echo láb megfelelő bekötésére kell figyelni (a program szerint) - vigyázat, a modulon nem mindig ez a sorrend, tehát ne csak a sorrendet figyeljük hanem a feliratokat is.
https://i2.wp.com/randomnerdtutorials.com/wp-content/uploads/2013/11/ultrasonic-sensor-with-arduino-hc-sr04.jpg

0

12

LCD kijelző, Joystick és servo motor:

#include <LiquidCrystal_I2C.h>
#include <Servo.h>

LiquidCrystal_I2C lcd(0x27,16,2);

int Y = A0;
int X = A1;
int Xpoz = 0;
int Ypoz = 0;
Servo fogo;

void setup()
{
  lcd.init();
  lcd.backlight(); 
  pinMode(X,INPUT);
  pinMode(Y,INPUT);
  fogo.attach(10);
}

void loop()

  Xpoz=map(analogRead(X),0,1024,0,16);
  lcd.setCursor(Xpoz,0);
  lcd.print("*");
  fogo.write(map(Xpoz,0,16,170,10) );

  Ypoz=map(analogRead(Y),0,1024,0,16);
  lcd.setCursor(Ypoz,1);
  lcd.print("*");
  delay(10);
  lcd.clear();
}

0

13

I2C LCD bekötése:

https://halckemy.s3.amazonaws.com/uploads/attachments/679767/fritzing-sketch-for-lcd1602-and-arduino_VNXIWTehlV.jpg

Arduino Joystick bekötése:
https://exploreembedded.com/wiki/images/5/5f/0_Joystick_with_Arduino_bb.png

0

14

L293d motorvezérlő IC bekötése:

A képpel ellentétben mi NE 12V-t hanem 5V-t állítsunk be a labortápon!!!!

https://hackster.imgix.net/uploads/attachments/559274/circuit-arduino_liGwsZLCyc.jpg

Az IC lábainak neve:
https://i.stack.imgur.com/xg8gz.png

Megnevezések:
(bal, felső sarokból lefelé haladva)
Enable - ezzel fogjuk a motor sebességét szabályozni egy PWM lábon keresztül pl: analogWrite(10,255);   ahol a 10 az Arduino PWM képes lába, a 255 pedig a teljes sebesség (0 és 255 között)
Input1 - az egyik irány, ha HIGH állapotban van pl digitalWrite(9,HIGH);  (az Input2 ilyenkor legyen LOW!)
Output1 - a motor egyik lába
GND - az arduino GND-jét és a labortáp fekete vezetékét kell rákötni
GND -  -II-
Output2 - a motor másik lába
Input2 - a másik irány, ha HIGH állapotban van pl digitalWrite(8,HIGH); (az Input1 ilyenkor legyen LOW!)
VS - a labortáp piros vezetéke (5V-ra állítva!)

(jobb felső saroktól indulva)
Vss - Arudino 5V vagy Vin lába

0

15

Önálló feladat:

A fenti kapcsolások és a minta kód felhasználásával készítsünk egy áramkört, melyre csatlakozik egy LCD kijelző amin egy csillag helyzete jelzi a joystick állapotát (alapból középen), valamint ennek helyzete alapján a rákötött villanymotor forgási irányát és sebességét tudjuk vezérelni!

0

16

Kedves Kollégák!
Szeretnék helyiértékhelyesen kiírni számokat Arduinoval, de eddig nem találtam elegáns megoldást. Nem tetszene az a megoldás, hogy a számjegyek száma alapján elé teszek szóközöket. Tud valaki elegáns megoldást?

Ilyesmit szeretnék látni:
http://sj.uploads.im/t/etsnx.jpg

0

17

Ha LCD-re akarsz kiírni akkor az lcd.setCursor(X,Y); a számok hossza alapján.
Ha Serial-ra akkor csak a szóközös megoldás van (tudtommal)

0

18

Pont azt szeretném kikerülni, hogy a számjegyek száma alapján pozicionálom a kurzort. Reméltem, hogy van valami formázás szerű dolog, mint Python-ban.
De nem adom fel, ha találok elegánsabb megoldást, megírom.

Köszi a választ :-)

0

19

OLED képernyő kezelése I2C kommunikációval

A szükséges könyvtárak letölthetőek: INNEN

Miután letöltöttük, a tartalmukat másoljuk be az arduino library mappájába!

Ezután ha elindítjuk az Arduino IDE-t a példák között meg is kell jelenni az Adafruit SSD1306 nevű könyvtárnak, amiből válasszuk ki az SSD1306_128x64 példát.
A programban keressük meg az alábbi sort:

if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3D))

és a kiemelt részt cseréljük erre: 0x3C

Ezután töltsük fel és próbáljuk ki a kijelzőt.

A bekötést az alábbi ábrán láthatjuk:
https://i1.wp.com/randomnerdtutorials.com/wp-content/uploads/2019/05/oled-display-arduino.png
Vigyázat! Az ábrán látható bekötés sorrendje eltérhet az általunk használt sorrendtől, ezért a lábak feliratát is figyeljük!!!

0

20

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels

#define OLED_RESET     4 // Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
#include <SoftwareSerial.h>

SoftwareSerial mySerial(12, 13); // RX, TX

String szoveg;

void setup() {
Serial.begin(9600);
mySerial.begin(9600);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.display();
display.clearDisplay();
display.display();
delay(1000);
szoveg="OK";
kiir();
}

void kiir() {
  display.clearDisplay();
  display.setTextSize(1); // Draw 2X-scale text
  display.setTextColor(SSD1306_WHITE);
  display.setCursor(0, 0);
  display.println(szoveg);   
  display.display();      // Show initial text 
}

void loop() {
  if (Serial.available()) {
   szoveg=Serial.readString();
   kiir();
  } 
  if (mySerial.available()) {
   szoveg=mySerial.readString();
   Serial.println(szoveg);
   kiir();
  }
}

0

21

Figyelem!

A december 5.-i (csütörtök) alkalom

ELMARAD!

12.-én találkozunk.

0

22

Sziasztok!

Belefutottam egy jelenségbe, megosztom Veletek. Eddig nem találtam rá utalást, de biztos van valami oka. Ha valaki tudja, miért van, ossza meg velünk  :flag:

A furcsaság:
start = millis();
....
Serial.println(start);

Szépen írja az idő múlását milliszekundumban, de ha bezárom a soros monitort, majd újra megnyitom, akkor nulláról újrakezdi a számokat. Ötlet???

0

23

A megoldás a soros monitor bezárásában és újranyitásában van - ugyanis amikor megnyitod a soros monitort az egyben reseteli is az Arduino-t. Erre azért van szükség, mert ugye feltöltöd a programot, ami ezután egyből el is indul - de ha megnyitod a soros monitort feltehetőleg látni is akarod a program indulását, tehát újraindul, hogy az elejéről írhasson ki mindent.

Megjegyzem, ha nem az USB portot használod hanem a 0-ás és 1-es lábról olvasod le az értékeket akkor ez nem fog előjönni.

0


You are here » Váci Robotika Labor » Haladó csoport (csütörtök) » Tananyagok