程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了控制由英雄联盟中的健康栏百分比领导大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决控制由英雄联盟中的健康栏百分比领导?

开发过程中遇到控制由英雄联盟中的健康栏百分比领导的问题如何解决?下面主要结合日常开发的经验,给出你关于控制由英雄联盟中的健康栏百分比领导的解决方法建议,希望对你解决控制由英雄联盟中的健康栏百分比领导有所启发或帮助;

我编写了一个代码来控制英雄联盟中由健康百分比变化的领导。我使用 python 和 OCR 检测健康状况并将健康数字发送到 Arduino 以控制 LED 使其在健康度 > 80% 时延迟 3 秒闪烁,当健康度

问题在于,所有健康百分比的 LED 仅闪烁 3 秒延迟。我该怎么办 ?提前谢谢

Python 代码:

 import serial
import time
import numpy as np
import cv2
from PIL import ImageGrab,Image
import os
import PyTesseract

ser = serial.serial('COM3',9600)
#This loop allows opencv to capture the screen conTinuously
while True:

  img = ImageGrab.grab(bBox=[840,1020,940,1050 ])

  
  img_np = np.array(img)

  frame = cv2.cvtcolor(img_np,cv2.color_BGR2GRAY)
  text = PyTesseract.image_to_String(framE)
 
  v3=-1
  if "/" in text:
    x = text.split("/")
    try:
        v1 = int(x[0])
        v2 = int(x[1])
        v3 = int((v1/v2)*100) 
        if v3<=100: 
           print(str(v3))
           v4= str(abs(v3))
           ser.write(b'v4')
           time.sleep(0.1)
           time.sleep(2)
           

          
    except:
        pass
   
  
  
  cv2.imshow("Screen",framE)

  if cv2.waitKey(1) == 27:
    break

cv2.destroyAllwindows()

Arduino 代码

const int led=8;
String value;
int i;

voID setup() 
   { 
      serial.begin(9600); 
      pinMode(led,OUTPUT);
      serial.println("Connection established...");
   }
 
voID loop() 
   {
     while (serial.available())
        {
             value = serial.read();
             i = value.toInt();
             if (100 >= i > 80)
             {
                digitalWrite(led,HIGH);    
                delay(3000);
                digitalWrite(led,LOW);
             }
             else if (0 <= i < 80)
             {
                digitalWrite(led,HIGH);    
                delay(500);
                digitalWrite(led,LOW);
             }
             else { digitalWrite(led,LOW);
             }
        }
     
   }

在此处输入代码

解决方法

我假设在 ser.write(b'v4') 中您不需要“'”,因为现在您发送的只是字符串“v4”,而不管它的值如何。

,

serial.read() 仅读取 1 个字节的数据。如果在 delay() 期间传入更多字节,仍会读取最旧的字节。这意味着您的串行端口可能被大于 80 的值完全填满。 您应该做以下 2 件事:

  1. 分解您的 arduino 程序以确保您在合理的时间内实际接收并评估端口上的正确值。
  2. 在没有 delay() 的情况下使 LED 闪烁。这是如何做到这一点的众多教程之一:https://www.forWARD.com.au/pfod/ArduinoProgrAMMing/TimingDelaysInArduino.html

大佬总结

以上是大佬教程为你收集整理的控制由英雄联盟中的健康栏百分比领导全部内容,希望文章能够帮你解决控制由英雄联盟中的健康栏百分比领导所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。