IOT

Boter-kaas-en-eieren spel gebaseerd op STONE TFT LCD en STM32

Samengevat

Tic-tac-toe is een spel dat wordt gespeeld op een raster van 3 bij 3, vergelijkbaar met gobang. Het dankt zijn naam aan het feit dat het bord over het algemeen geen grenzen trekt en de rasterlijnen zijn gerangschikt in boter-kaas-en-eieren. De tools die nodig zijn voor het spel zijn alleen papier en pen. Vervolgens laten twee spelers die O en X vertegenwoordigen om de beurt markeringen achter op het rooster. Elke drie markeringen vormen een rechte lijn, die de winnaar is.

Dit artikel is bedoeld om microcontroller STM32 en STONE LCD-scherm te gebruiken om een ​​eenvoudig boter-kaas-en-eieren-spel te ontwikkelen.

Benodigde materialen voor het experiment

Het systeemprincipe

Geef op dat de eerste tik op het scherm O moet zijn, de tweede tik op het scherm is X, heeft deze cyclus gedaan. Stel 8 arrays in om het aantal O en X in elke rij, kolom en diagonaal van elk raster op te slaan, zolang er drie van hetzelfde teken zijn, is de overwinning, dan zal er een knipperend rood vak zijn om de overwinning van de rij, kolom of diagonaal en tik vervolgens op reset om het spel opnieuw te starten.

Het volgende is het stroomschema:

Boter-kaas-en-eierenspel gebaseerd op STONE TFT LCD en STM32 IOT PlatoBlockchain data-intelligentie. Verticaal zoeken. Ai.

STM32 en STONE LCD-schermsysteem hardware-ontwerp

(A) STEEN LCD-scherm

  1. Hardware-ontwerp voor boter-kaas-en-eieren

Gebruik STONE LCD-scherm van Beijing STONE Technology co., ltd, het model is STWI070WT-01, met een geïntegreerd TFT-scherm en aanraakcontroller.

Boter-kaas-en-eierenspel gebaseerd op STONE TFT LCD en STM32 IOT PlatoBlockchain data-intelligentie. Verticaal zoeken. Ai.
  1.  STVC070WT-01 Producteigenschappen
Fysieke parameter 
Maat7 inch
Resolutie800 × RGB × 480
Pixelafstand0.0642 (B) x 0.1790 (H) mm
Kleur262,144 kleuren (18 bit)
Viewing Area154.08 (B) x 85.92 (H) mm
weergave Dimension186.4mmx105.5mm
Algemene afmeting186.4 mm x 105.5 mm x 17.4 mm (standaardtype) 186.4 mm x 105.5 mm x 23.8 mm (met Ethernet-poort)
Netto Gewicht 300g
Display 
Type verlichtingLED
Helderheid300cd/m2 (helderheid kan in 100 niveaus instelbaar zijn)
Contrast500:1
Achtergrondverlichting300,000 uur kunt opladen
Kijk hoek70 ° / 70 ° / 50 ° / 70 ° (L / R / U / D)
TFT-paneelEen klasse industriepaneel
Touch Screen4-draads weerstandsaanraking / capacitieve aanraking / zonder touchscreen
Scherm modus:Digital
Gegevensverwerker 
CPUCortex A8
Refresh Rate1G Hz
Maximale framesnelheid60 FPS
Interface 
seriële interfaceRS232 / RS422 / RS485 / TTL-niveau
Ethernet-interface10M/100M (Optioneel)
Draadloze interfaceWi-Fi / Bluetooth (optioneel)
Projectbestand downloadenUSB2.0-poort of U-opslagschijf
Laboratoriumvoedingen 
Nominale spanning+12V gelijkstroom of +5V gelijkstroom
Toegestane spanningsbereik+7V DC…+28V DC of +5V DC
Maximaal toelaatbare transiënten+ 28V
Tijd tussen twee transiëntenMinimaal 50 seconden
Interne zekering2A zelfherstelzekering
Stroomverbruik3.0w
Omgevingsomstandigheden 
Maximaal toegestane omgevingstemperatuurOperatieOpslag-20℃~ +70℃-30℃~ +80℃
Relatieve vochtigheidOperatieOpslag55℃,85%60℃,90%
SchokbelastingOperatieOpslag15 g/11 msec25 g/6 msec
trillingOperatieOpslag0.035 mm (10 – 58 Hz)/ 1 g (58 – 500 Hz)3.5 mm (5 – 8,5 Hz)/ 1 g (8.5 – 500 Hz)
Barometrische drukOperatieOpslag706 tot 1030 hPa581 tot 1030 hPa
Ruisimmuniteit 
Statische ontlading (contactontlading/luchtontlading)EN 61000-4-2 6 kV/8 kV
RF-straling:EN 61000-4-310 V/m, 80% AM1 kHz
PulsmodulatieENV 50204900 MHz ±5 MHz10 V/meff., 50% ED, 200 Hz
RF-geleidingEN 61000-4-6150 kHz – 80 MHz10 V, 80% AM, 1 kHz
Burst-interferentieVoedingslijnenProcesdatalijnenSignaallijnenEN 61000-4-42kV2kV1kV
Ondersteuningsapparaat 
UART-poortOndersteuningRS232 / RS422 / RS485 / TTL
Network PortOndersteuningEthernet-poort / Wi-Fi / Bluetooth
Flash-geheugenOndersteuningStandaard 256 MB, uitbreiding 1 GB of 2 GB
ZoemerSupport
RTCSupport
USB poortOndersteuningOnline downloaden via USB-kabel
U Opslag Schijf InterfaceSupport.Offline Gebruikersgegevens downloaden of kopiëren
Touch Screen4-draads weerstand / capacitief
Vector lettertypeStandaard TTF-formaat
BeeldOndersteuning PNG/JPG/BMP/SVG/GIF-formaat
Audio InterfaceOndersteuning WAV-formaat De lengte van een enkel audiobestand is niet beperkt, theoretisch maximaal 4096 audiobestanden, het luidsprekervermogen is 8 ohm 2 watt of 4 ohm 3 watt
Command SetUniforme vereenvoudigde opdrachtensets
Geheugen 
Flash-geheugenStandaard 256 MB, extensie 1 GB of 2 GB
Geheugenhoeveelheid voor afbeeldingAfhankelijk van de mogelijkheden van de afbeelding, stelt u de indeling "PNG, BMP, JPG, SVG, GIF" voor.

(B) STM32-kaart

Bij gebruik van een STM32-bord is de chip van de STM32 CKS32F303.

Boter-kaas-en-eierenspel gebaseerd op STONE TFT LCD en STM32 IOT PlatoBlockchain data-intelligentie. Verticaal zoeken. Ai.

De STM32-familie van ARM Cortex-M0-, M0+-, M3-, M4- en M7-kernen is ontworpen voor embedded toepassingen die hoge prestaties, lage kosten en een laag stroomverbruik vereisen.

  • 2.0V-3.6V voeding
  • 5V compatibele I/O-pinnen
  • Uitstekende veilige klokmodus
  • Energiezuinige modus met wekfunctie
  • Interne RC-oscillator
  • Ingebed resetcircuit
  • Bedrijfstemperatuurbereik.
  • -40°C tot +85°C of 105°C

Ontwerp van systeemsoftware

Het ontwikkelingsproces van STM32 en STONE LCD-scherm:

1: maak het project en laad de vereiste afbeeldingen in het project.

2: gebruik de Stone-designersoftware om dynamisch geassocieerde relaties te creëren; de belangrijkste bedieningselementen zijn: "Knop", "afbeelding";

3: softwaresimulatie en -compilatie om uitvoerbare bestanden te genereren.

4: het LCD-scherm is via USB op de pc aangesloten en kopieer het uitvoerbare bestand naar het scherm.

Maak eerst een nieuw project aan zoals hieronder weergegeven.

Boter-kaas-en-eierenspel gebaseerd op STONE TFT LCD en STM32 IOT PlatoBlockchain data-intelligentie. Verticaal zoeken. Ai.
Boter-kaas-en-eierenspel gebaseerd op STONE TFT LCD en STM32 IOT PlatoBlockchain data-intelligentie. Verticaal zoeken. Ai.

Ten tweede, importeer alle afbeeldingen in de bron

Boter-kaas-en-eierenspel gebaseerd op STONE TFT LCD en STM32 IOT PlatoBlockchain data-intelligentie. Verticaal zoeken. Ai.

Stel vervolgens de knopbediening in op elk raster en maak de knoppen onzichtbaar. 

Boter-kaas-en-eierenspel gebaseerd op STONE TFT LCD en STM32 IOT PlatoBlockchain data-intelligentie. Verticaal zoeken. Ai.

Vergeet niet de resetknop in te stellen!

Het voltooide effect wordt hieronder weergegeven:

Boter-kaas-en-eierenspel gebaseerd op STONE TFT LCD en STM32 IOT PlatoBlockchain data-intelligentie. Verticaal zoeken. Ai.

Voeg daarna op dezelfde manier afbeeldingsbesturingselementen toe aan elk raster en stel ze allemaal in op witte afbeeldingen.

Voeg ten slotte het gif-besturingselement toe en stel het in op onzichtbaar.

De delen van het voltooide effect worden hieronder weergegeven:

Boter-kaas-en-eierenspel gebaseerd op STONE TFT LCD en STM32 IOT PlatoBlockchain data-intelligentie. Verticaal zoeken. Ai.
Boter-kaas-en-eierenspel gebaseerd op STONE TFT LCD en STM32 IOT PlatoBlockchain data-intelligentie. Verticaal zoeken. Ai.
Boter-kaas-en-eierenspel gebaseerd op STONE TFT LCD en STM32 IOT PlatoBlockchain data-intelligentie. Verticaal zoeken. Ai.
Boter-kaas-en-eierenspel gebaseerd op STONE TFT LCD en STM32 IOT PlatoBlockchain data-intelligentie. Verticaal zoeken. Ai.

Schakelschema:

Boter-kaas-en-eierenspel gebaseerd op STONE TFT LCD en STM32 IOT PlatoBlockchain data-intelligentie. Verticaal zoeken. Ai.

Code delen

/* Omvat ——————————————————————*/ 

#include “stm32f0xx_hal.h” 

#include "Uart.h" 

#include "tekenreeks.h" 

#include "ws2812.h" 

#include "IWDG.h" 

RGB_COLOR GEBRUIKER_RGB_COLOR; 

niet-ondertekend teken TX_Mode = 1; // Transmissietype vlagbit 1:232 0:TTL 

niet-ondertekend teken BLINK_2=0; 

niet-ondertekend teken RX3_BUF[32]; //Aangepaste ontvangstbuffer op drie niveaus 

#define KNOP1 0x81 

#define KNOP2 0x82 

#define KNOP3 0x83 

#define KNOP4 0x84 

#define KNOP5 0x85 

#define KNOP6 0x86 

#define KNOP7 0x87 

#define KNOP8 0x88 

#define KNOP9 0x89 

#define KNOP0 0x8A 

#define CLEAR 0x8E 

niet-ondertekend int r_flag1 = 0; 

niet-ondertekende int quan[4][2]={0}; 

niet-ondertekend int cha [4][2]={0}; 

niet-ondertekende int quan_hang1 = 0; 

niet-ondertekende int quan_hang2 = 0; 

niet-ondertekende int quan_hang3 = 0; 

niet-ondertekende int quan_lie1 = 0; 

niet-ondertekende int quan_lie2 = 0; 

niet-ondertekende int quan_lie3 = 0; 

niet-ondertekende int quan_zuoxia = 0; 

niet-ondertekende int quan_youxia = 0; 

niet-ondertekende int cha_hang1 = 0; 

niet-ondertekende int cha_hang2 = 0; 

niet-ondertekende int cha_hang3 = 0; 

niet-ondertekende int cha_lie1 = 0; 

niet-ondertekende int cha_lie2 = 0; 

niet-ondertekende int cha_lie3 = 0; 

niet-ondertekende int cha_zuoxia = 0; 

niet-ondertekende int cha_youxia = 0; // niet-ondertekende int r_flag10 = 0; 

void SystemClock_Config (ongeldig); 

ongeldig Error_Handler (ongeldig); 

statische leegte MX_GPIO_Init (ongeldig); 

int main (void) 

uint8_t kleur_buf = 0; 

// Functieselectie 

/* Reset van alle randapparatuur, initialiseert de Flash-interface en de Systick. */ 

HAL_Init(); 

/* Configureer de systeemklok */ 

SysteemKlok_Config(); 

/* Initialiseer alle geconfigureerde randapparatuur */ 

MX_GPIO_Init(); 

TX_Mode = HAL_GPIO_ReadPin (GPIOA, GPIO_PIN_4); 

if(TX_Modus) 

MX_USART1_UART_Init(); 

//232 Initialisatie 

anders 

MX_USART1_UART_Init2(); 

//TTl-initialisatie 

terwijl(1) 

if(TX_Mode!= HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_4)) 

HAL_NVI_SystemReset(); 

// Jumper-omkering, opnieuw opstarten en opnieuw initialiseren 

als(MNG_USART1.RX_OVER_FLG ==TRUE) 

// 

Seriële gegevens ontvangen vlagbit 

RX3_BUF[0]=MNG_USART1.RX_BUF[7]; 

// Methode 2: Krijg een besturingsnaam met een vaste lengte 

RX3_BUF[1]=MNG_USART1.RX_BUF[8]; 

RX3_BUF[2]=MNG_USART1.RX_BUF[9]; 

RX3_BUF[3]=MNG_USART1.RX_BUF[10]; 

RX3_BUF[4]=MNG_USART1.RX_BUF[11]; 

RX3_BUF[5]=MNG_USART1.RX_BUF[12]; 

RX3_BUF[6]=MNG_USART1.RX_BUF[13]; 

//RX3_BUF[7]=MNG_USART1.RX_BUF[14]; 

if((strcmp(“knop1”,(const char *)RX3_BUF))==0) 

//Selecteer controle

color_buf = KNOP1; 

}

if((strcmp(“knop2”,(const char *)RX3_BUF))==0) 

color_buf = KNOP2; 

}

if((strcmp(“knop3”,(const char *)RX3_BUF))==0) 

color_buf = KNOP3; 

}

if((strcmp(“knop4”,(const char *)RX3_BUF))==0) 

color_buf = KNOP4; 

}

if((strcmp(“knop5”,(const char *)RX3_BUF))==0) 

color_buf = KNOP5; 

}

if((strcmp(“knop6”,(const char *)RX3_BUF))==0) 

color_buf = KNOP6; 

}

if((strcmp(“knop7”,(const char *)RX3_BUF))==0) 

color_buf = KNOP7; 

}

if((strcmp(“knop8”,(const char *)RX3_BUF))==0) 

color_buf = KNOP8; 

}

if((strcmp(“knop9”,(const char *)RX3_BUF))==0) 

color_buf = KNOP9; 

}

if((strcmp(“knop0”,(const char *)RX3_BUF))==0) 

color_buf = KNOP0; 

}

schakelaar (color_buf) 

geval KNOP1: 

//if(r_vlag1 == 0) 

if((r_flag1 == 0)&&(MNG_USART1.RX_BUF[14] == 0x02)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

r_vlag1 ^= 1; 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”widget\”:\”image2\”,\”image\”:\”circle\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Gegevens(MNG_USART1); 

r_vlag1 ^= 1; 

quan_hang1++; 

quan_lie1++; 

quan_youxia++;  

// memset (RX3_BUF, 0,7); 

// memset (MNG_USART1.RX_BUF,0,USART1_RX_LEN); 

color_buf = WISSEN; 

}

else if((r_flag1 == 1)&&(MNG_USART1.RX_BUF[14] == 0x02)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”widget\”:\”image2\”,\”image\”:\”x\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Gegevens(MNG_USART1); 

r_vlag1 = 0; 

cha_hang1++; 

cha_lie1++; 

cha_youxia++; 

// memset (RX3_BUF, 0,7); 

color_buf = WISSEN; 

}

//r_vlag1 = 1; 

te breken; 

geval KNOP2: 

if((r_flag1 == 0)&&(MNG_USART1.RX_BUF[14] == 0x02)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”widget\”:\”image3\”,\”image\”:\”circle\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Gegevens(MNG_USART1); 

r_vlag1 = 1; 

quan_hang1++; 

quan_lie2++; 

// memset (RX3_BUF, 0,7); 

color_buf = WISSEN; 

}

else if((r_flag1 == 1)&&(MNG_USART1.RX_BUF[14] == 0x02)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”widget\”:\”image3\”,\”image\”:\”x\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Gegevens(MNG_USART1); 

r_vlag1 = 0; 

cha_hang1++; 

cha_lie2++; 

// memset (RX3_BUF, 0,7); 

color_buf = WISSEN; 

}

te breken; 

geval KNOP3: 

if((r_flag1 == 0)&&(MNG_USART1.RX_BUF[14] == 0x02)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”widget\”:\”image4\”,\”image\”:\”circle\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Gegevens(MNG_USART1); 

r_vlag1 = 1; 

quan_hang1++; 

quan_lie3++; 

quan_zuoxia++; 

// memset (RX3_BUF, 0,7); 

color_buf = WISSEN; 

}

else if((r_flag1 == 1)&&(MNG_USART1.RX_BUF[14] == 0x02)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”widget\”:\”image4\”,\”image\”:\”x\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Gegevens(MNG_USART1); 

r_vlag1 = 0; 

cha_hang1++; 

cha_lie3++; 

cha_zuoxia++; 

// memset (RX3_BUF, 0,7); 

color_buf = WISSEN; 

}

te breken; 

geval KNOP4: 

if((r_flag1 == 0)&&(MNG_USART1.RX_BUF[14] == 0x02)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”widget\”:\”image5\”,\”image\”:\”circle\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Gegevens(MNG_USART1); 

r_vlag1 = 1; 

quan_hang2++; 

quan_lie1++; 

// memset (RX3_BUF, 0,7); 

//r_vlag10=1; 

color_buf = WISSEN; 

}

else if((r_flag1 == 1)&&(MNG_USART1.RX_BUF[14] == 0x02)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”widget\”:\”image5\”,\”image\”:\”x\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Gegevens(MNG_USART1); 

r_vlag1 = 0; 

cha_hang2++; 

cha_lie1++; 

// memset (RX3_BUF, 0,7); 

color_buf = WISSEN; 

}

te breken; 

geval KNOP5: 

if((r_flag1 == 0)&&(MNG_USART1.RX_BUF[14] == 0x02)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”widget\”:\”image6\”,\”image\”:\”circle\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Gegevens(MNG_USART1); 

r_vlag1 = 1; 

quan_hang2++; 

quan_lie2++; 

quan_zuoxia++; 

quan_youxia++; 

// memset (RX3_BUF, 0,7); 

color_buf = WISSEN; 

}

else if((r_flag1 == 1)&&(MNG_USART1.RX_BUF[14] == 0x02)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”widget\”:\”image6\”,\”image\”:\”x\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Gegevens(MNG_USART1); 

r_vlag1 = 0; 

cha_hang2++; 

cha_lie2++; 

cha_zuoxia++; 

cha_youxia++; 

// memset (RX3_BUF, 0,7); 

color_buf = WISSEN; 

}

te breken; 

geval KNOP6: 

if((r_flag1 == 0)&&(MNG_USART1.RX_BUF[14] == 0x02)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”widget\”:\”image7\”,\”image\”:\”circle\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Gegevens(MNG_USART1); 

r_vlag1 = 1; 

quan_hang2++; 

quan_lie3++; 

// memset (RX3_BUF, 0,7); 

color_buf = WISSEN; 

}

else if((r_flag1 == 1)&&(MNG_USART1.RX_BUF[14] == 0x02))

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”widget\”:\”image7\”,\”image\”:\”x\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Gegevens(MNG_USART1); 

r_vlag1 = 0; 

cha_hang2++; 

cha_lie3++; 

// memset (RX3_BUF, 0,7); 

color_buf = WISSEN; 

}

te breken; 

geval KNOP7: 

if((r_flag1 == 0)&&(MNG_USART1.RX_BUF[14] == 0x02)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”widget\”:\”image8\”,\”image\”:\”circle\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Gegevens(MNG_USART1); 

r_vlag1 = 1; 

quan_hang3++; 

quan_lie1++; 

quan_zuoxia++; 

// memset (RX3_BUF, 0,7); 

color_buf = WISSEN; 

}

else if((r_flag1 == 1)&&(MNG_USART1.RX_BUF[14] == 0x02)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”widget\”:\”image8\”,\”image\”:\”x\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Gegevens(MNG_USART1); 

r_vlag1 = 0; 

cha_hang3++; 

cha_lie1++; 

cha_zuoxia++; 

// memset (RX3_BUF, 0,7); 

color_buf = WISSEN; 

}

te breken; 

geval KNOP8: 

if((r_flag1 == 0)&&(MNG_USART1.RX_BUF[14] == 0x02)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”widget\”:\”image9\”,\”image\”:\”circle\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Gegevens(MNG_USART1); 

r_vlag1 = 1; 

quan_hang3++; 

quan_lie2++; 

// memset (RX3_BUF, 0,7); 

color_buf = WISSEN; 

}

else if((r_flag1 == 1)&&(MNG_USART1.RX_BUF[14] == 0x02)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”widget\”:\”image9\”,\”image\”:\”x\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Gegevens(MNG_USART1); 

r_vlag1 = 0; 

cha_hang3++; 

cha_lie2++; 

// memset (RX3_BUF, 0,7); 

color_buf = WISSEN; 

}

te breken; 

geval KNOP9: 

if((r_flag1 == 0)&&(MNG_USART1.RX_BUF[14] == 0x02)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”widget\”:\”image10\”,\”image\”:\”circle\ ”}>ET”);

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Gegevens(MNG_USART1); 

r_vlag1 = 1; 

quan_hang3++; 

quan_lie3++; 

quan_youxia++; 

// memset (RX3_BUF, 0,7); 

color_buf = WISSEN; 

}

else if((r_flag1 == 1)&&(MNG_USART1.RX_BUF[14] == 0x02)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”widget\”:\”image10\”,\”image\”:\”x\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Gegevens(MNG_USART1); 

r_vlag1 = 0; 

cha_hang3++; 

cha_lie3++; 

cha_youxia++; 

// memset (RX3_BUF, 0,7); 

color_buf = WISSEN; 

}

te breken; 

geval KNOP0: 

r_vlag1 = 0; 

quan_hang1=quan_hang2=quan_hang3=cha_hang1=cha_hang2=cha_hang3=0; 

quan_lie1=quan_lie2=quan_lie3=cha_lie1=cha_lie2=cha_lie3=0; 

quan_zuoxia=quan_youxia=cha_zuoxia=cha_youxia=0; 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”widget\”:\”image2\”,\”image\”:\”bai\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Gegevens(MNG_USART1); 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”widget\”:\”image3\”,\”image\”:\”bai\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Gegevens(MNG_USART1); 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”widget\”:\”image4\”,\”image\”:\”bai\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Gegevens(MNG_USART1); 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”widget\”:\”image5\”,\”image\”:\”bai\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Gegevens(MNG_USART1); 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”widget\”:\”image6\”,\”image\”:\”bai\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Gegevens(MNG_USART1); 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”widget\”:\”image7\”,\”image\”:\”bai\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Gegevens(MNG_USART1); 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”widget\”:\”image8\”,\”image\”:\”bai\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Gegevens(MNG_USART1); 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”widget\”:\”image9\”,\”image\”:\”bai\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Gegevens(MNG_USART1);

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”widget\”:\”image10\”,\”image\”:\”bai\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Gegevens(MNG_USART1); 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_visible\”,\”type\”:\”widget\”,\”widget\”:\”gif4\”,\”visible\”:false}>ET ”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Gegevens(MNG_USART1); 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_visible\”,\”type\”:\”widget\”,\”widget\”:\”gif5\”,\”visible\”:false}>ET ”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Gegevens(MNG_USART1); 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_visible\”,\”type\”:\”widget\”,\”widget\”:\”gif6\”,\”visible\”:false}>ET ”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Gegevens(MNG_USART1); 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_visible\”,\”type\”:\”widget\”,\”widget\”:\”gif7\”,\”visible\”:false}>ET ”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Gegevens(MNG_USART1); 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_visible\”,\”type\”:\”widget\”,\”widget\”:\”gif8\”,\”visible\”:false}>ET ”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Gegevens(MNG_USART1); 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_visible\”,\”type\”:\”widget\”,\”widget\”:\”gif9\”,\”visible\”:false}>ET ”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Gegevens(MNG_USART1); 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_visible\”,\”type\”:\”widget\”,\”widget\”:\”gif10\”,\”visible\”:false}>ET ”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Gegevens(MNG_USART1); 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_visible\”,\”type\”:\”widget\”,\”widget\”:\”gif11\”,\”visible\”:false}>ET ”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Gegevens(MNG_USART1); 

// memset (RX3_BUF, 0,7); 

memset(MNG_USART1.RX_BUF,0,USART1_RX_LEN); 

te breken; 

default: 

MNG_USART1.RX_OVER_FLG = ONWAAR; 

te breken; 

}

​ 

als((quan_hang1==3)||(cha_hang1==3)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_visible\”,\”type\”:\”widget\”,\”widget\”:\”gif4\”,\”visible\”:true}>ET ”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Gegevens(MNG_USART1); 

quan_hang1=quan_hang2=quan_hang3=cha_hang1=cha_hang2=cha_hang3=0; 

quan_lie1=quan_lie2=quan_lie3=cha_lie1=cha_lie2=cha_lie3=0; 

quan_zuoxia=quan_youxia=cha_zuoxia=cha_youxia=0; 

}

anders if((quan_hang2==3)||(cha_hang2==3)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_visible\”,\”type\”:\”widget\”,\”widget\”:\”gif5\”,\”visible\”:true}>ET ”);

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Gegevens(MNG_USART1); 

quan_hang1=quan_hang2=quan_hang3=cha_hang1=cha_hang2=cha_hang3=0; 

quan_lie1=quan_lie2=quan_lie3=cha_lie1=cha_lie2=cha_lie3=0; 

quan_zuoxia=quan_youxia=cha_zuoxia=cha_youxia=0; 

}

anders if((quan_hang3==3)||(cha_hang3==3)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_visible\”,\”type\”:\”widget\”,\”widget\”:\”gif6\”,\”visible\”:true}>ET ”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Gegevens(MNG_USART1); 

quan_hang1=quan_hang2=quan_hang3=cha_hang1=cha_hang2=cha_hang3=0; 

quan_lie1=quan_lie2=quan_lie3=cha_lie1=cha_lie2=cha_lie3=0; 

quan_zuoxia=quan_youxia=cha_zuoxia=cha_youxia=0; 

}

anders if((quan_lie1==3)||(cha_lie1==3)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_visible\”,\”type\”:\”widget\”,\”widget\”:\”gif7\”,\”visible\”:true}>ET ”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Gegevens(MNG_USART1); 

quan_hang1=quan_hang2=quan_hang3=cha_hang1=cha_hang2=cha_hang3=0; 

quan_lie1=quan_lie2=quan_lie3=cha_lie1=cha_lie2=cha_lie3=0; 

quan_zuoxia=quan_youxia=cha_zuoxia=cha_youxia=0; 

}

anders if((quan_lie2==3)||(cha_lie2==3)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_visible\”,\”type\”:\”widget\”,\”widget\”:\”gif8\”,\”visible\”:true}>ET ”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Gegevens(MNG_USART1); 

quan_hang1=quan_hang2=quan_hang3=cha_hang1=cha_hang2=cha_hang3=0; 

quan_lie1=quan_lie2=quan_lie3=cha_lie1=cha_lie2=cha_lie3=0; 

quan_zuoxia=quan_youxia=cha_zuoxia=cha_youxia=0; 

}

anders if((quan_lie3==3)||(cha_lie3==3)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_visible\”,\”type\”:\”widget\”,\”widget\”:\”gif9\”,\”visible\”:true}>ET ”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Gegevens(MNG_USART1); 

quan_hang1=quan_hang2=quan_hang3=cha_hang1=cha_hang2=cha_hang3=0; 

quan_lie1=quan_lie2=quan_lie3=cha_lie1=cha_lie2=cha_lie3=0; 

quan_zuoxia=quan_youxia=cha_zuoxia=cha_youxia=0; 

}

anders if((quan_zuoxia==3)||(cha_zuoxia==3)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_visible\”,\”type\”:\”widget\”,\”widget\”:\”gif11\”,\”visible\”:true}>ET ”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Gegevens(MNG_USART1); 

quan_hang1=quan_hang2=quan_hang3=cha_hang1=cha_hang2=cha_hang3=0; 

quan_lie1=quan_lie2=quan_lie3=cha_lie1=cha_lie2=cha_lie3=0; 

quan_zuoxia=quan_youxia=cha_zuoxia=cha_youxia=0; 

}

anders if((quan_youxia==3)||(cha_youxia==3)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_visible\”,\”type\”:\”widget\”,\”widget\”:\”gif10\”,\”visible\”:true}>ET ”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Gegevens(MNG_USART1); 

quan_hang1=quan_hang2=quan_hang3=cha_hang1=cha_hang2=cha_hang3=0; 

quan_lie1=quan_lie2=quan_lie3=cha_lie1=cha_lie2=cha_lie3=0; 

quan_zuoxia=quan_youxia=cha_zuoxia=cha_youxia=0; 

MNG_USART1.RX_OVER_FLG = ONWAAR; 

}

/** Configuratie systeemklok 

*/

nietig SystemClock_Config(nietig) 

RCC_OscInitTypeDef RCC_OscInitStruct; 

RCC_ClkInitTypeDef RCC_ClkInitStruct; 

RCC_PeriphCLKInitTypeDef PeriphClkInit; 

RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; 

RCC_OscInitStruct.HSISTate = RCC_HSI_ON; 

RCC_OscInitStruct.HSICalibrationValue = 16; 

RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; 

RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI; 

RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL12; 

RCC_OscInitStruct.PLL.PREDIV = RCC_PREDIV_DIV1; 

if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) 

Error_Handler(); 

}

RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK 

|RCC_CLOCKTYPE_PCLK1; 

RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; 

RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; 

RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; 

if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK) 

Error_Handler(); 

}

PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART1; 

PeriphClkInit.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK1; 

if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) 

Error_Handler(); 

}

HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000); 

HAL_SYSTICK_CLKSourceConfig (SYSTICK_CLKSOURCE_HCLK); 

/* SysTick_IRQn interruptconfiguratie */ 

HAL_NVIC_SetPriority (SysTick_IRQn, 0, 0); 

}

/** Pinout-configuratie 

*/

statische ongeldig MX_GPIO_Init(void) 

GPIO_InitTypeDef GPIO_InitStruct; 

/* GPIO-poorten Klok inschakelen */ 

__HAL_RCC_GPIOA_CLK_ENABLE(); 

GPIO_InitStruct.Pin = GPIO_PIN_7; 

GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; 

GPIO_InitStruct.Pull = GPIO_PULLDOWN; 

GPIO_InitStruct.Speed ​​= GPIO_SPEED_FREQ_HIGH; 

HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); 

GPIO_InitStruct.Pin = GPIO_PIN_4; 

GPIO_InitStruct.Mode = GPIO_MODE_INPUT; 

GPIO_InitStruct.Pull = GPIO_PULLUP; 

GPIO_InitStruct.Speed ​​= GPIO_SPEED_FREQ_HIGH; 

HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); 

}

/* GEBRUIKERSCODE BEGIN 4 */

/* GEBRUIKERSCODE EINDE 4 */ 

/ **

* @brief Deze functie wordt uitgevoerd als er een fout optreedt. 

* @param Geen 

* @retval Geen 

*/ 

ongeldig Error_Handler (ongeldig) 

/* GEBRUIKERSCODE BEGIN Error_Handler */ 

/* Gebruiker kan zijn eigen implementatie toevoegen om de HAL-foutretourstatus te rapporteren */ 

terwijl(1) 

{

}

/* GEBRUIKERSCODE EINDE Error_Handler */ 

}

#ifdef USE_FULL_ASSERT 

/ **

* @brief Rapporteert de naam van het bronbestand en het bronregelnummer 

* waar de assert_param-fout is opgetreden. 

* @param-bestand: verwijzing naar de naam van het bronbestand 

* @param regel: assert_param foutregel bronnummer 

* @retval Geen 

*/ 

void assert_failed(uint8_t* bestand, uint32_t regel) 

/* GEBRUIKERSCODE BEGIN 6 */ 

/* Gebruiker kan zijn eigen implementatie toevoegen om de bestandsnaam en het regelnummer te rapporteren, 

ex: printf(“Verkeerde parameterwaarde: bestand %s op regel %d\r\n”, bestand, regel) */ 

/* GEBRUIKERSCODE EINDE 6 */ 

}

#stop als 

/ **

* @} 

*/ 

/ **

* @} 

*/

/************************* (C) AUTEURSRECHT STMicroelectronics *****END OF FILE****/

Eindresultaten laten zien

Boter-kaas-en-eierenspel gebaseerd op STONE TFT LCD en STM32 IOT PlatoBlockchain data-intelligentie. Verticaal zoeken. Ai.

Bron: Plato Data Intelligence