51MCU 发表于 2022-1-21 15:45:47

RISC-Vduino UNO Board+Processing串口通信

本帖最后由 51MCU 于 2022-1-21 15:59 编辑

Processing串口编程+RISC-Vduino串口通信(Processing从串口读取数据)
Processing开发RISC-Vduino UNO Board,成功实现Processing接收到来自
RISC-Vduino UNO Board的问候:Hello,Processing! I am RISC-Vduino Board!Processing 成功实现下发数据控制RISC-Vduino UNO Board上的LED亮灭!


【1】硬件
1.笔记本或PC电脑(建议系统Windows/Linux)[电脑应该都有吧]
2.RISC-Vduino UNO Board [手头没有,某宝或PDD淘一块吧]
3.USB 下载线
4.USB mini通信线




【2】软件
1.MRS(除了MounRiver Studio IDE,也可以选其他RISC-V IDE)


2.Processing


【3】上传开源代码
RISC-Vduino UNO Board开源代码:
void HelloWorld_LED_Init(void)
{
    GPIO_InitTypeDefGPIO_InitStructure;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
    GPIO_ResetBits(GPIOA,GPIO_Pin_1);
}

// the main function runs once when you press reset or power the RISC-Vduino board
int main(void)
{
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
    Delay_Init();
    USART_Printf_Init(9600);// initialize serial communication at 9600 bits per second:
    printf("SystemClk:%d\r\n",SystemCoreClock);
    printf("This is SerialCommunication example\r\n");
    HelloWorld_LED_Init();
    // the while function runs over and over again forever
    while(1)
    {
      //Processing串口编程+RISC-Vduino串口通信(RISC-Vduino串口读取Processing下发的数据)
      if(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) != RESET)
      {
         if(USART_ReceiveData(USART1) == 0x00)
         {
             GPIO_ResetBits(GPIOA,GPIO_Pin_1);// CLOSE RISC-Vduino BOARD LED
         }
         if(USART_ReceiveData(USART1) == 0x01)
         {
             GPIO_SetBits(GPIOA,GPIO_Pin_1); // OPEN RISC-Vduino BOARD LED
         }
      }
      //Processing串口编程+RISC-Vduino串口通信(Processing从RISC-Vduino串口上传数据)
      printf("Hello,Processing!\r\n");
      Delay_Ms(25);
      printf("I am RISC-Vduino Board!\r\n");
    }
}

RISC-Vduino UNO Board全部工程代码下载地址:
https://gitee.com/risc-v-mcu-chinese-network/RISC-Vduino-UNO-RevC/blob/develop/SoftwareFirmware_BASIC/RISC-Vduino_08_SerialCommunication.zip


Processing开源代码:
import processing.serial.*;
Serial port;// Create object from Serial class
String message;

void setup()
{
port = new Serial(this, "COM3", 9600);//open windows Device COM3,from RISC-Vduino UNO Board connect!
}
void draw()
{
message = port.readString();
print(message);
port.write(1);// OPEN RISC-Vduino BOARD LED
//port.write(0);// CLOSE RISC-Vduino BOARD LED
}

Processing全部工程代码下载地址:
https://gitee.com/risc-v-mcu-chinese-network/Processing--RISC-Vduino/tree/develop/
【4】背景小知识
Processing简介:Processing是数位艺术软件,纯软件平台,无法直接控制硬件,而借助RISC-Vduino,可以读取各种传感器的数值,也可控制各种机电装置,可扩展用于控制智能家居,无人飞机,机器人等各种硬件实体.用Processing来学计算机语言,编程的结果能表现为更加直观、友好的数位图片,或者是动态影像,这样会激发学生们敲程序的冲动,让编程变成有趣的创作经历.
      生活中有相当一部分机器人爱好者是非计算机专业的人员,对于他们来说,专业软件开发平台的编程技术会成为其学习的障碍,从而导致他们放弃深入探究的计划!2001年,麻省理工学院(MIT)媒体实验室的Casey Reas和BenjaminFry发起了此计划,其特定目标之一便是开发一个有效的工具,通过激励性的可视化反馈,帮助非程序员进行编程的入门学习。
       Processing语言建立在Java语言的基础之上,但使用简化的语法和图形编程模型。Processing是一种开源的编程语言和环境,它服务于有创意的设计师和艺术家,这些人希望利用某种程序,来创意静态图像和动态影像,并使创作的作品能与人产生良好的互动。这个软件最初的开发目的是作为一种学习编程软件,能够可视化的方法,教学习者计算机编程基础,现在它已经演化为完成专业工作的工具。现有成千上万的学生,艺术家,设计师,研究人员,和爱好者,用Processing来学习、创意和制作产品。
      例如想让在电脑PC中设计的艺术作品与外部物理世界进行互动,让作品能与人和物产生“对话”,就需要传感器把外部环境的信息,采集到电脑中处理,做到这一点,目前通常的方法是通过RISC-Vduino控制器把传感器数据,通过串口通信,读到上位机软件Processing里,然后通过处理,让Processing数位作品的某些特征与传感器数据产生关联,于是物理世界的环境数据发生变化时,也会使虚拟数字世界的作品随之互动,不断幻化出动态语义的奇妙画面。

RISC-VMCU 发表于 2022-1-21 16:58:35

强烈推荐!!!

塞巴斯蒂安 发表于 2022-1-21 18:02:38

这个简直是指导性教程啊。。。{:10_280:}

孔明 发表于 2022-1-21 18:34:43

72MHz~108MHz的32位RISC-Vduino Board的确是比8位AVR Arduino Board强大太多了,有了MIT的Processing加持,创新玩法无限啊
页: [1]
查看完整版本: RISC-Vduino UNO Board+Processing串口通信