<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-CN">
		<id>http:///https//wiki.microduino.cn/index.php?action=history&amp;feed=atom&amp;title=%E7%AC%AC%E4%BA%8C%E5%8D%81%E4%B8%89%E8%AF%BE--Microduino_%E4%B8%B2%E5%8F%A3%E6%8E%A5%E6%94%B6%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%B9%B6%E8%BD%AC%E5%8C%96%E4%B8%BA%E6%95%B0%E7%BB%84</id>
		<title>第二十三课--Microduino 串口接收字符串并转化为数组 - 版本历史</title>
		<link rel="self" type="application/atom+xml" href="http:///https//wiki.microduino.cn/index.php?action=history&amp;feed=atom&amp;title=%E7%AC%AC%E4%BA%8C%E5%8D%81%E4%B8%89%E8%AF%BE--Microduino_%E4%B8%B2%E5%8F%A3%E6%8E%A5%E6%94%B6%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%B9%B6%E8%BD%AC%E5%8C%96%E4%B8%BA%E6%95%B0%E7%BB%84"/>
		<link rel="alternate" type="text/html" href="https//wiki.microduino.cn/index.php?title=%E7%AC%AC%E4%BA%8C%E5%8D%81%E4%B8%89%E8%AF%BE--Microduino_%E4%B8%B2%E5%8F%A3%E6%8E%A5%E6%94%B6%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%B9%B6%E8%BD%AC%E5%8C%96%E4%B8%BA%E6%95%B0%E7%BB%84&amp;action=history"/>
		<updated>2026-04-29T18:35:53Z</updated>
		<subtitle>本wiki的该页面的版本历史</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>https//wiki.microduino.cn/index.php?title=%E7%AC%AC%E4%BA%8C%E5%8D%81%E4%B8%89%E8%AF%BE--Microduino_%E4%B8%B2%E5%8F%A3%E6%8E%A5%E6%94%B6%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%B9%B6%E8%BD%AC%E5%8C%96%E4%B8%BA%E6%95%B0%E7%BB%84&amp;diff=1216&amp;oldid=prev</id>
		<title>2014年3月2日 (日) 15:04 Pkj</title>
		<link rel="alternate" type="text/html" href="https//wiki.microduino.cn/index.php?title=%E7%AC%AC%E4%BA%8C%E5%8D%81%E4%B8%89%E8%AF%BE--Microduino_%E4%B8%B2%E5%8F%A3%E6%8E%A5%E6%94%B6%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%B9%B6%E8%BD%AC%E5%8C%96%E4%B8%BA%E6%95%B0%E7%BB%84&amp;diff=1216&amp;oldid=prev"/>
				<updated>2014-03-02T15:04:13Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;zh-CN&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;2014年3月2日 (日) 15:04的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;第1行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第1行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{Language|Lesson_23--Microduino_&amp;quot;Serial_port_receives_string_and_translated_into_an_array&amp;quot; }}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{| style=&amp;quot;width: 800px;&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{| style=&amp;quot;width: 800px;&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Pkj</name></author>	</entry>

	<entry>
		<id>https//wiki.microduino.cn/index.php?title=%E7%AC%AC%E4%BA%8C%E5%8D%81%E4%B8%89%E8%AF%BE--Microduino_%E4%B8%B2%E5%8F%A3%E6%8E%A5%E6%94%B6%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%B9%B6%E8%BD%AC%E5%8C%96%E4%B8%BA%E6%95%B0%E7%BB%84&amp;diff=1181&amp;oldid=prev</id>
		<title>Pkj：Created page with &quot;{| style=&quot;width: 800px;&quot; |- | ==目的== 此教程的目的在于将字符串按某种规则转换成数组并赋值。通过串口PWM控制LED灯，串口收到逗号分割...&quot;</title>
		<link rel="alternate" type="text/html" href="https//wiki.microduino.cn/index.php?title=%E7%AC%AC%E4%BA%8C%E5%8D%81%E4%B8%89%E8%AF%BE--Microduino_%E4%B8%B2%E5%8F%A3%E6%8E%A5%E6%94%B6%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%B9%B6%E8%BD%AC%E5%8C%96%E4%B8%BA%E6%95%B0%E7%BB%84&amp;diff=1181&amp;oldid=prev"/>
				<updated>2014-03-02T14:37:44Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;{| style=&amp;quot;width: 800px;&amp;quot; |- | ==目的== 此教程的目的在于将字符串按某种规则转换成数组并赋值。通过串口PWM控制LED灯，串口收到逗号分割...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{| style=&amp;quot;width: 800px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
==目的==&lt;br /&gt;
此教程的目的在于将字符串按某种规则转换成数组并赋值。通过串口PWM控制LED灯，串口收到逗号分割的6组数字比如：100,200,300,400,500,600然后在6个PWM端口3, 5, 6, 9, 10, 11输出对应PWM值。&lt;br /&gt;
&lt;br /&gt;
==设备==&lt;br /&gt;
'''[[Microduino-Core]]'''&lt;br /&gt;
'''[[Microduino-FT232R]]'''&lt;br /&gt;
*其他硬件设备&lt;br /&gt;
**面包板跳线  	 一盒  &lt;br /&gt;
**面包板  	 一块  &lt;br /&gt;
**LED发光二极管  六个&lt;br /&gt;
**220欧姆电阻  	 六个  &lt;br /&gt;
**USB数据连接线  一根&lt;br /&gt;
&lt;br /&gt;
==原理图==&lt;br /&gt;
[[File:第二十二课-串口数组.jpg|600px|center|thumb]]&lt;br /&gt;
&lt;br /&gt;
*程序&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
    //定义一个comdata字符串变量，赋初值为空值&lt;br /&gt;
String comdata = &amp;quot;&amp;quot;;&lt;br /&gt;
    //numdata是分拆之后的数字数组&lt;br /&gt;
int numdata[6] = {0}, PWMPin[6] = {3, 5, 6, 9, 10, 11}, mark = 0;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
    //定义0~6脚是输出&lt;br /&gt;
  for(int i = 0; i &amp;lt; 6; i++) pinMode(PWMPin[i], OUTPUT);&lt;br /&gt;
    Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
    //j是分拆之后数字数组的位置记数&lt;br /&gt;
  int j = 0;&lt;br /&gt;
  &lt;br /&gt;
      //不断循环检测串口缓存，一个个读入字符串，&lt;br /&gt;
  while (Serial.available() &amp;gt; 0)&lt;br /&gt;
  {&lt;br /&gt;
      //读入之后将字符串，串接到comdata上面。&lt;br /&gt;
    comdata += char(Serial.read());&lt;br /&gt;
          //延时一会，让串口缓存准备好下一个数字，不延时会导致数据丢失，&lt;br /&gt;
    delay(2);&lt;br /&gt;
        //标记串口读过数据，如果没有数据的话，直接不执行这个while了。&lt;br /&gt;
    mark = 1;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
      if(mark == 1)  //如果接收到数据则执行comdata分析操作，否则什么都不做。&lt;br /&gt;
      {&lt;br /&gt;
      //显示刚才输入的字符串（可选语句）&lt;br /&gt;
        Serial.println(comdata);&lt;br /&gt;
          //显示刚才输入的字符串长度（可选语句）&lt;br /&gt;
        Serial.println(comdata.length());&lt;br /&gt;
        &lt;br /&gt;
    /*******************下面是重点*******************/&lt;br /&gt;
    //以串口读取字符串长度循环，&lt;br /&gt;
        for(int i = 0; i &amp;lt; comdata.length() ; i++)&lt;br /&gt;
        {&lt;br /&gt;
        //逐个分析comdata[i]字符串的文字，如果碰到文字是分隔符（这里选择逗号分割）则将结果数组位置下移一位&lt;br /&gt;
        //即比如11,22,33,55开始的11记到numdata[0];碰到逗号就j等于1了，&lt;br /&gt;
        //再转换就转换到numdata[1];再碰到逗号就记到numdata[2];以此类推，直到字符串结束&lt;br /&gt;
          if(comdata[i] == ',')&lt;br /&gt;
          {&lt;br /&gt;
            j++;&lt;br /&gt;
          }&lt;br /&gt;
          else&lt;br /&gt;
          {&lt;br /&gt;
             //如果没有逗号的话，就将读到的数字*10加上以前读入的数字，&lt;br /&gt;
             //并且(comdata[i] - '0')就是将字符'0'的ASCII码转换成数字0（下面不再叙述此问题，直接视作数字0）。&lt;br /&gt;
             //比如输入数字是12345，有5次没有碰到逗号的机会，就会执行5次此语句。&lt;br /&gt;
             //因为左边的数字先获取到，并且numdata[0]等于0，&lt;br /&gt;
             //所以第一次循环是numdata[0] = 0*10+1 = 1&lt;br /&gt;
             //第二次numdata[0]等于1，循环是numdata[0] = 1*10+2 = 12&lt;br /&gt;
             //第三次是numdata[0]等于12，循环是numdata[0] = 12*10+3 = 123&lt;br /&gt;
             //第四次是numdata[0]等于123，循环是numdata[0] = 123*10+4 = 1234&lt;br /&gt;
             //如此类推，字符串将被变成数字0。&lt;br /&gt;
            numdata[j] = numdata[j] * 10 + (comdata[i] - '0');&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
        //comdata的字符串已经全部转换到numdata了，清空comdata以便下一次使用，&lt;br /&gt;
        //如果不请空的话，本次结果极有可能干扰下一次。&lt;br /&gt;
        comdata = String(&amp;quot;&amp;quot;);&lt;br /&gt;
        &lt;br /&gt;
        &lt;br /&gt;
        //循环输出numdata的内容，并且写到PWM引脚&lt;br /&gt;
        for(int i = 0; i &amp;lt; 6; i++)&lt;br /&gt;
        {&lt;br /&gt;
          Serial.print(&amp;quot;Pin &amp;quot;);&lt;br /&gt;
          Serial.print(PWMPin[i]);&lt;br /&gt;
          Serial.print(&amp;quot; = &amp;quot;);&lt;br /&gt;
          Serial.println(numdata[i]);&lt;br /&gt;
          analogWrite(PWMPin[i], numdata[i]);&lt;br /&gt;
          numdata[i] = 0;&lt;br /&gt;
        }&lt;br /&gt;
        //输出之后必须将读到数据的mark置0，不置0下次循环就不能使用了。&lt;br /&gt;
        mark = 0;&lt;br /&gt;
      }&lt;br /&gt;
    　　　}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==结果==&lt;br /&gt;
*串口界面监视&lt;br /&gt;
在串口数据输入6组用逗号隔开的数据可打印出6个PWM端口出对应PWM值&lt;br /&gt;
[[File:第二十二课-串口数组监视.jpg|600px|center|thumb]]&lt;br /&gt;
*实物监视：&lt;br /&gt;
在串口数据输入6组用逗号隔开的数据可看到每个灯的亮度情况，数字的值越高，亮度越强。&lt;/div&gt;</summary>
		<author><name>Pkj</name></author>	</entry>

	</feed>