Найти тему

Скиф v10 beta

Ура ура ура! наконец таки я могу представить вам первую версию своего детёныша!

Так начнём с основы

версия
10
префикс
BETA
тип МК
Arduino Mega
язык программирования ЯДРТ v2

Теперь о деталях

Модуль матрицы 4х1

Rc 552 модуль RFID

Серво машинка

Oled экран 0*96

Ик приёмник

L298n

Переделанная база для машинки

mega sensor shield

Отдельно о базе

Вы конечно можете использовать и 4 мотора на вашем проекте! Но для людей у которых нет возможности всё это хуравьё запитать - лайфхак

снимите 2 мотора и положите их в коробочку! получится как-то так

мотор-колесо мотор-колесо

колесо колесо

Куда всё подключать?

ик приёмник - 2 пин

L298n INT1 - 4

L298n INT2 - 5

L298n INT3 - 6

L298n INT4 - 7

RC552 RST - 9

RC552 SDA - 53

RC552 MOSI - 51

RC552 MISO - 50

RC552 SCK - 52

OLED sda - 20

OLED scl - 21

MTRX CS - 23

MTRX DIN - 24

MTRX CLK - 22

библиотеки
GyverMotor
NecDecoder.h
GyverMAX7219
SPI
MFRC522
Servo
GyverOled

А ТЕПЕРЬ САМ КОД

#include <GyverMotor.h>
#include <NecDecoder.h>
#include <GyverMAX7219.h>
#include <SPI.h>
#include <MFRC522.h>
#include <Servo.h>
#include <GyverOLED.h>

GMotor L(DRIVER2WIRE, 4, 5, HIGH);
GMotor R(DRIVER2WIRE, 6, 7, HIGH);
NecDecoder ir;
MAX7219 < 4, 1, 23, 24, 22 > mtrx;
GyverOLED<SSD1306_128x64, OLED_NO_BUFFER> oled;
MFRC522 rfid(53, 9);
MFRC522::MIFARE_Key key;
MFRC522::StatusCode status;
Servo robot_servo;


void setup() {
Serial.begin(9600);
L.setMode(STOP);
R.setMode(STOP);
attachInterrupt(0, irIsr, FALLING);
mtrx.begin();
mtrx.setBright(15);
mtrx.setCursor(0, 0);
SPI.begin();
rfid.PCD_Init();
for (byte i = 0; i < 6; i++) {
key.keyByte[i] = 0xFF;
}
robot_servo.attach(3);
oled.init();
oled.clear();
oled.setScale(1);
oled.home();


}

void loop() {
//чтобы ехать обязательно перед функциями езды пиши digitalWrite(54, HIGH); и
//подключи самый правый зажим под питание на драйвере(ниже) к 54 пину
//ПИТАНИЕ МОТОРОВ ЗЕМЛЯ
ПИТАНИЕ ЛОГИКА
}

void SimpleForward(int pwm) {
L.setMode(FORWARD);
R.setMode(FORWARD);
L.setSpeed(pwm);
R.setSpeed(pwm);
}
void SimpleBackward(int pwm) {
L.setMode(BACKWARD);
R.setMode(BACKWARD);
L.setSpeed(pwm);
R.setSpeed(pwm);
}
void SimpleStop() {
L.setMode(STOP);
R.setMode(STOP);
}
void PrintTextMTRX(int BRIGHT, int LEFT_MARGIN, String TEXT) {
mtrx.setBright(BRIGHT);
mtrx.setCursor(LEFT_MARGIN, 0);
mtrx.print(TEXT);
mtrx.update();
}
void PrintRunTextMTRX(int BRIGHT, String TEXT) {
int LGTH_STROKE = -TEXT.length() * 3;

mtrx.setBright(BRIGHT);

for (int i = 33; i > LGTH_STROKE; i--) {
mtrx.setCursor(i, 0);
mtrx.print(TEXT);
mtrx.update();
delay(15);
}
mtrx.clear();
mtrx.update();
}
void readIRcommand() {
if (ir.available()) {
int ir_data = ir.readCommand();
return ir_data;
}
}
void drawStandartInterfacePage1(int PWM, String SPR, int CU){
oled.setCursor(0,0);
oled.setScale(1);
oled.rect(0, 0, 126, 63, OLED_STROKE);
oled.setCursor(2, 1);
oled.print("Моторы");
oled.line(60, 20, 62, 20);
oled.line(62, 20, 62, 10);
oled.line(63, 10, 65, 10);
oled.line(65, 10, 65, 20);
oled.line(66, 20, 67, 20);

oled.line(67, 20, 69, 20);
oled.line(69, 20, 69, 10);
oled.line(70, 10, 72, 10);
oled.line(72, 10, 72, 20);
oled.line(73, 20, 75, 20);

oled.line(75, 20, 77, 20);
oled.line(77, 20, 77, 10);
oled.line(78, 10, 80, 10);
oled.line(80, 10, 80, 20);
oled.line(81, 20, 83, 20);

oled.setCursorXY(60, 25);
oled.setScale(1);
oled.print(PWM);
oled.setCursor(5, 3);
oled.print("СПР:");
oled.setCursor(26, 3);
oled.print(SPR);
oled.setCursor(5, 4);
oled.print("ЦУ:");
oled.setCursor(25, 4);
oled.print(CU);
oled.setCursor(5, 6);
oled.print("<1>");
oled.setCursor(30, 6);
oled.print("2");
oled.setCursor(50, 6);
oled.print("3");
}

void irIsr() {
ir.tick();
}

Кому хочется поддержать меня - https://www.tinkoff.ru/cf/1yxL13JvaHM

Кому интересен я - DISCORD: Werohit

По предложениям : savvvidik@gmail.com

Проблемы с ПКМ(Коллекторы)? Alliam поможет вам! https://alliam.su#_sa=5176
Лично отвечаю за компетентность данных людей в этой сфере!