ЛАЗЕРНЫЙ ТИР

миха-79

Пользователь
Регистрация
1 Июн 2024
Сообщения
7
Реакции
0
Баллы
1
C++:
#include <LiquidCrystalRus.h>

#include <ServoTimer2.h>

#include <VirtualWire.h>

#include <VirtualWire_Config.h>

ServoTimer2 s,s1,s2,s3,s4;

#define LDR A0 // пин подключения ldr

#define LDR A1 // пин подключения ldr

#define LDR A2 // пин подключения ldr

#define LDR A3 // пин подключения ldr

#define LDR A4 // пин подключения ldr

int p=A0; //пин для приема сигнала

int p1=A1; //пин для приема сигнала

int p2=A2; //пин для приема сигнала

int p3=A3; //пин для приема сигнала

int p4=A4;//пин для приема сигнала

int din=A5;

int mish=5;

int res=7,och=0,led=1, sump,r=0;

int serv=0, serv1=0, serv2=0, serv3=0, serv4=0,k=0,l=0;

LiquidCrystalRus lcd(13, 12, 10, 9, 8, 7);

int x,y,z,b,a;

void setup()

{

Serial.begin(9600);

vw_set_ptt_inverted(true); // Необходимодля DR3100

vw_setup(2000); // Задаем скорость приема

vw_rx_start(); // Начинаем мониторинг эфира

lcd.begin(16, 2); // для дисплея

pinMode(p,INPUT);

pinMode(p1,INPUT);

pinMode(p2,INPUT);

pinMode(p3,INPUT);

pinMode(p4,INPUT);

pinMode(din,OUTPUT);

s.attach(2);

s.write(150);

delay(300);

s1.attach(3);

s1.write(150);

delay(300);

s2.attach(4);

s2.write(150);

delay(300);

s3.attach(5);

s3.write(150);

delay(300);

s4.attach(6);

s4.write(150);

delay(500);

s.detach();

s1.detach();

s2.detach();

s3.detach();

s4.detach();

}

int incPulse(int val, int inc){

if( val + inc  > 2000 )

return 1000 ;

else

return val + inc;

}

void loop()

{

lcd.setCursor(0, 0);

lcd.print("ПОЕХАЛИ-СНАЙПЕР!");

lcd.setCursor(0, 1);

lcd.print("!!!ОЧКИ:");

x = analogRead(p)/4;

y = analogRead(p1)/4;

z = analogRead(p2)/4;

b = analogRead(p3)/4;

a = analogRead(p4)/4;

Serial.println(b);

uint8_t buf[VW_MAX_MESSAGE_LEN]; // Буфердлясообщения

uint8_t buflen = VW_MAX_MESSAGE_LEN; // Длинабуфера

if (vw_get_message(buf, &buflen)) // Если принято сообщение

{

int i;

digitalWrite(11, true);

if (buf[0] != 'z')

{

return;

}

i = 2;

sump = 0;// Поскольку передача идет посимвольно, то нужно преобразовать набор символов в число

while (buf != ' ')

{

sump *= 25;

sump += buf - '0';

i++;

}

}

if(sump==25){

noTone(din);

mish=5;

och=0;

sump=15;

s.attach(2);

s.write(150);

delay(300);

s1.attach(3);

s1.write(150);

delay(300);

s2.attach(4);

s2.write(150);

delay(300);

s3.attach(5);

s3.write(150);

delay(300);

s4.attach(6);

s4.write(150);

delay(500);

s.detach();

s1.detach();

s2.detach();

s3.detach();

s4.detach();

serv=0;

serv1=0;

serv2=0;

serv3=0;

serv4=0;

sump=15;

och=0;

mish=5;

k=0;

l=0;

lcd.setCursor(0, 1);

lcd.print("!!!Ochki:");

lcd.setCursor(9, 1);

lcd.print(och);

lcd.setCursor(10, 1);

lcd.print("0");}

if(mish>0 && mish<=5){

if(sump>0 && sump<=15){

digitalWrite(led,LOW);

if(x>220 && serv<1){

s.attach(2);

s.write(1500);

delay(200);

s.detach();

mish=mish-1;

serv=serv+1;

digitalWrite(led,HIGH);

}

digitalWrite(led,LOW);

if(y>200 && serv2<1){

s1.attach(3);

s1.write(1500);

delay(200);

s1.detach();

mish=mish-1;

serv2=serv2+1;

digitalWrite(led,HIGH);

}

digitalWrite(led,LOW);

if(z>220 && serv1<1){

s2.attach(4);

s2.write(1500);

delay(200);

s2.detach();

mish=mish-1;

serv1=serv1+1;

digitalWrite(led,HIGH);

}

digitalWrite(led,LOW);

if(b>220 && serv3<1){

s3.attach(5);

s3.write(1500);

delay(200);

s3.detach();

mish=mish-1;

serv3=serv3+1;

digitalWrite(led,HIGH);

}

digitalWrite(led,LOW);

if(a>220 && serv4<1){

s4.attach(6);

s4.write(1500);

delay(200);

s4.detach();

mish=mish-1;

serv4=serv4+1;

digitalWrite(led,HIGH);

}

}

if(sump==0&&l==0){

l=l+1;

och=5-mish;

Serial.println(och);

lcd.setCursor(0, 1);

lcd.print("!!!ОЧКИ:");

lcd.setCursor(9, 1);

lcd.print(och);

analogWrite ( din ,  255 ) ;

delay ( 50 ) ;

analogWrite ( din ,  40 ) ;

delay ( 10 ) ;

analogWrite ( din ,  255 ) ;

delay ( 50 ) ;

analogWrite ( din ,  100 ) ;

delay ( 50 ) ;

}

}

if(mish==0&&k==0){

och=5+sump-1;

Serial.println(och);

lcd.setCursor(0, 1);

lcd.print("!!!ОЧКИ:");

lcd.setCursor(9, 1);

lcd.print(och);

k=k+1;

Serial.println(" ");

digitalWrite(11, false);

}

}



#include <font_LCD_1602_RUS.h>

#define _LCD_TYPE 1  // для работы с I2C дисплеями

#include <LCD_1602_RUS_ALL.h>

#include <VirtualWire.h>

#include <VirtualWire_Config.h>

#include <Wire.h>

#include <RobotClass_LiquidCrystal_I2C.h>

#define laser 8 //Задает имя pin лазера

#define button 10

#define restart 7

#define din 6

LCD_1602_RUS lcd(0x27, 16, 2);

// Устанавливаем дисплей

byte idx = 0;

int n, sump, s;

const int transmit_pin = 9; //Пин подключения передатчика

void setup()

{

Serial.begin(9600);

lcd.init();

lcd.backlight();// Включаем подсветку дисплея

lcd.setCursor(0, 0);

lcd.print("ПАТРОНЫ:");

lcd.setCursor(0, 1);

lcd.print("00");

pinMode(laser, OUTPUT); //порт вывода для лазера

pinMode(button, INPUT);// порт ввода для кнопки

pinMode(restart, INPUT);// порт вывода для динамик

pinMode(din, OUTPUT);// порт вывода для динамик

sump=n;

vw_set_tx_pin(transmit_pin); //установка пина

vw_setup(2000); // Устанавливаем скорость передачи (бит/с)

}

void loop()

{

if (digitalRead(restart)== HIGH)

{

n=10;

sump=10;

lcd.setCursor(0, 1); //перевод курсора в 2 столбец 2й строки

lcd.print("10");

}

else

{

s=0;

String strmsg = " ";

strmsg+=sump;

char msg[255];

strmsg.toCharArray(msg, 255);

Serial.print(msg);

vw_send((uint8_t *)msg, strlen(msg));

vw_wait_tx();

if(n!=0)//условие прекращения работы пистолета

{

if (digitalRead(button) == HIGH) //условие работы кнопки всего 3 милисекунды

{

digitalWrite(laser,HIGH);

delay(100);

s++;

}

if(s>=1)

{

digitalWrite(laser, LOW);

s=0;

sump=sump-1;

n=n-1;// вычитание одного патрона

}

while  (digitalRead(button) != LOW)

{

digitalWrite(laser,LOW);

}

lcd.setCursor(0, 1);

lcd.print("10");

String strmsg = " ";

strmsg+=sump;

char msg[255];

strmsg.toCharArray(msg, 255);

Serial.print(msg);

vw_send((uint8_t *)msg, strlen(msg));

vw_wait_tx();

}

else

{

lcd.setCursor(0, 0);

lcd.print("ПАТРОНЫ:");

lcd.setCursor(0, 1);

lcd.print("00");

digitalWrite(laser,LOW); //отключениесветодиода

String strmsg = " ";

strmsg+=sump;

char msg[255];

strmsg.toCharArray(msg, 255);

Serial.print(msg);

vw_send((uint8_t *)msg, strlen(msg));

vw_wait_tx();// Ждем пока передача будет окончена

}

}

}



ПОМОГИТЕ ПОПРАВИТЬ КОД СХЕМУ В fLPROG нЕ МОГУ СОСТАВИТЬ.
 
Последнее редактирование:
фоторезистор

MX-RM-5V

FS1000A

подскажите где скачать данные блоки
 
фоторезистор

MX-RM-5V

FS1000A

подскажите где скачать данные блоки
 
подскажите как что при попаданий света на фоторезистор , сервопривод поворачивался на 90 градусов и уменьшал количество очков на 1 на дисплей .. вот какие модули на применить для этой идеи.
 
подскажите как что при попаданий света на фоторезистор , сервопривод поворачивался на 90 градусов и уменьшал количество очков на 1 на дисплей .. вот какие модули на применить для этой идеи.
Используйте счетчик в меньшую сторону.
 
спасибо с этим разобрался, но вопрос еще стался а вопрос вот какой по достижению определенного числа все действия прекращались и счетчик обнулялся до 0
 
подскажите как соединить фоторезистор с включением серво двигателя , константу я поставил на 90 ,надо бы чтоб при попаданий в фоторезистор серво двигатель поднимался на 90 градусов и отпускался на ноль . но пока не придумал как это сделатью
 

Вложения

  • Безымянный.jpg
    Безымянный.jpg
    6.1 KB · Просмотры: 2
счетчик не подходит
 
вопрос кто может помочь в написаний в flprog ? и укажете сумму которую готовы взять за работу , пробовал не получается.
жду ответа.
 
вопрос кто может помочь в написаний в flprog ? и укажете сумму которую готовы взять за работу , пробовал не получается.
жду ответа.
Добрый день!

Чтобы мы могли вам помочь, опишите вашу задачу подробнее. Пожалуйста, прикрепите файлы вашего проекта и опишите, что именно вы уже сделали. Также укажите, с чем у вас возникли трудности и что в итоге вы хотите получить. Чем больше конкретики вы предоставите, тем точнее мы сможем вам помочь.

С нетерпением ждем вашего ответа!
 
Назад
Сверху Снизу