AVR编程实现LED矩阵和按钮矩阵互动的Tinkercad仿真

需积分: 10 1 下载量 114 浏览量 更新于2024-01-31 收藏 232KB DOCX 举报
在本文中,将介绍一个基于AVR编程的LED矩阵和按钮矩阵的功能。此功能旨在通过根据随机数点亮LED矩阵,再通过按下相应的按钮熄灭LED矩阵来测试使用者的反应能力。如果使用者按对了按钮,则LCD显示器上将显示“OK”,否则将显示“Wrong”。 为了实现这个功能,我们需要使用AVR编程来控制整个过程。同时,我们需要两个Arduino设备,分别称为Arduino 1和Arduino 2, 代码必须正确使用在正确的Arduino设备上。 在Arduino 1设备上,我们需要编写代码以控制LED矩阵的亮灭。我们可以使用Tinkercad仿真软件来模拟整个过程。在仿真过程中,我们可以通过生成随机数来控制LED矩阵的亮灭。如果使用者按下了正确的按钮,LED矩阵将熄灭,并且LCD显示屏上会显示“OK”,表示使用者按对了。反之,如果使用者按下了错误的按钮,LED矩阵将保持亮着,并且LCD显示屏上会显示“Wrong”,表示使用者按错了。 在Arduino 2设备上,我们需要编写代码来控制按钮矩阵的输入。通过使用按钮矩阵,我们可以检测使用者按下了哪个按钮,并将该信息传递给Arduino 1设备。根据这个信息,Arduino 1设备将相应地控制LED矩阵的亮灭。 整个过程将在Tinkercad仿真软件中进行模拟。使用者按下按钮后,通过按钮矩阵,信息将传递给Arduino 1设备。然后,Arduino 1设备将根据接收到的信息控制LED矩阵的亮灭。如果使用者按下了正确的按钮,则LED矩阵将熄灭,并且LCD显示屏上会显示“OK”。否则,LED矩阵将保持亮着,并且LCD显示屏上会显示“Wrong”。 通过这个功能,我们可以测试使用者的反应能力和准确性。使用者需要根据LED矩阵的亮灭情况来按下相应的按钮。如果他们能够正确地按下相应的按钮来熄灭LED矩阵,则他们将得到“OK”的认可。如果他们按错了按钮,则他们将得到“Wrong”的提示。 总的来说,这个基于AVR编程的LED矩阵和按钮矩阵的功能在Tinkercad仿真软件中模拟了一个反应能力测试。通过控制LED矩阵的亮灭和按钮矩阵的输入,使用者需要根据LED矩阵的状态按下正确的按钮。通过这种方式,我们可以测试他们的反应能力和准确性。

ProjectHistory projectHistory = projectHistoryService.getById(projectHistoryId); Unit unit = unitService.getById(projectHistory.getPricingUnitId()); List<ProjectCalculateResult> projectCalculateResultList = projectCalculateResultService.list(new LambdaQueryWrapperX<ProjectCalculateResult>().eq(ProjectCalculateResult::getProjectHistoryId, projectHistoryId)); //计算总数量 insideTaskService.statisticalOptions(projectCalculateResultList); String unitName = unit.getUnitName(); unitName = unitName.substring(0, 2); String projectName = projectHistory.getProjectName(); Map<String, Object> params = new HashMap<>(); ClassPathResource resource = new ClassPathResource("templates"+File.separator+"project_letters.docx"); InputStream inputStream = resource.getInputStream(); MyXWPFDocument doc = new MyXWPFDocument(inputStream); //简单渲染文本 params.put("projectName",projectName); params.put("unit",unitName); //渲染表格 List<Map<String, Object>> jobs = new ArrayList<>(); Map<String, Object> job; for (int i = 0; i < projectCalculateResultList.size(); i++) { job = new HashMap<>(); job.put("id", i+1); job.put("zxbz",projectCalculateResultList.get(i).getDecoration()); job.put("jsjd",projectCalculateResultList.get(i).getFamilyProperty()); BigDecimal projectRent = projectCalculateResultList.get(i).getProjectRent().setScale(2, BigDecimal.ROUND_HALF_UP); job.put("projectRent",projectRent); jobs.add(job); } params.put("jobs",jobs); SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy年MM月dd日"); String transformDate=simpleDateFormat.format(new Date()); params.put("dateTime",transformDate); String temDir="templates"+ File.separator+"project_letters.docx"; ;//生成临时文件存放地址 //生成文件名 Long time = new Date().getTime(); // 生成的word格式 String formatSuffix = ".docx"; // 拼接后的文件名 String fileName = time + formatSuffix;//文件名 带后缀 //导出word WordUtils.exportWordDoc(doc, temDir, fileName, params, request, response);怎么改才能将下载的文件字体为仿宋

2023-07-14 上传