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 нЕ МОГУ СОСТАВИТЬ.
Последнее редактирование: