2018-01-06 16:43:04    190    0    0

http://www.ocrobot.com/doku.php?id=learning

https://wenku.baidu.com/view/9befc7f5a300a6c30d229f74.html

https://max.book118.com/html/2016/1214/72143788.shtm

原理就是直接用传输的函数!!! vb可以直接连上端口。这是基本上这五年来所有的工控上位机的做法。

啊 万能的arduino


arduino还能控制stm32

http://www.stmcu.org/module/forum/thread-608305-1-1.html

2017-12-17 14:32:38    12    0    0

点亮规则

    打开默认关闭的RCC连接的外设时钟

    讲IO口配置为输出低电平

    控制ODR寄存器即GPIO的值

位操作

    如果直接=1||=0的话会导致所有位数字变化

    所以我们使用

    置位 |= 和 清零 &=~

    效果是不改变其他位的情况下用这个语句

    

2017-12-16 12:41:20    138    0    0

2017-12-16 12:37:22    10    0    0

这次是rc522的射频模块实验 参考网站先码着 这周板子带错了 放在学校。下周开工。


 http://bbs.elecfans.com/jishu_469851_1_1.html 单片机基础的基础

 


pwm控制

http://www.geek-workshop.com/forum.php?mod=viewthread&tid=120 官方文档的翻译

pwm主要有四种控制方式 

第一

连在pwm口上,在setup端口PUT模式后用aoalogWrite(端口号(pin),数值) 数值要求在0-256间。

第二

插在一般gpio口上,运用pwm的原理来实现波形模拟信号的输出。具体操作就是用普通的digitalWrite 之后delayMicroseconds(时间),时间用的计数单位是毫秒,一般来说我们写的时候一段pwm的时候语句加起来的一共是1000,就代表一秒钟做这个波形。

后两种都是寄存器控制了 区别说大不大 但是更底层 更接近51或者stm系列单片机。

时钟输出 | Arduino输出Pin编号 | 芯片Pin | Pin name
OC0A 6 12 PD6
OC0B 5 11 PD5
OC1A 9 15 PB1
OC1B 10 16 PB2
OC2A 11 17 PB3
OC2B 3 5 PD3 

//寄存器的对应表

第三

快速pwm

  1. pinMode(3, OUTPUT);
  2.   pinMode(11, OUTPUT);
  3.   TCCR2A = _BV(COM2A1) | _BV(COM2B1) | _BV(WGM21) | _BV(WGM20);
  4.   TCCR2B = _BV(CS22);
  5.   OCR2A = 180;
  6.   OCR2B = 50;

第四

相位修正pwm

  1. pinMode(3, OUTPUT);
  2.   pinMode(11, OUTPUT);
  3.   TCCR2A = _BV(COM2A1) | _BV(COM2B1) | _BV(WGM20);
  4.   TCCR2B = _BV(CS22);
  5.   OCR2A = 180;
  6.   OCR2B = 50;

中间就改变了WGM2这个寄存器的值 所以导致pwm的模式不同了,其实区别并不大。一个是周期少了一半,另一个就是波形会返回再来一遍。

相位修正原理是达到比较器,也就是时钟清零的时候,它会返回在来一次,所以一个周期其实是256*2-2次也就是255次。

2017-12-03 17:05:50    196    0    0

蜂鸣器

vcc - 3v3 

gnd -gnd

io - io 

直接setup 端口OUTPUT模式后高电平就可以发声了 不过3v3声音有点小 应该要接5v?

还有个要注意的就是高电平是关,低电平是开。


 

全彩rgb

RGB - io

“-” - GND

看教程叫我接5v,结果接上去完全没有反应,试了一下还是GND有反应,讲真还是蛮好看的。

接下来是代码

这是普通变化

void setup()
{
 pinMode(11,OUTPUT);
 pinMode(12,OUTPUT);
 pinMode(13,OUTPUT);
}
void loop()
{
 digitalWrite(11,LOW); //低电平触发,亮。
 delay(1000);
 digitalWrite(11,HIGH); //高电平,灭。
 delay(1000);
 digitalWrite(12,LOW);
 delay(1000);
 digitalWrite(12,HIGH);
 delay(1000);
 digitalWrite(13,LOW);
 delay(1000);
 digitalWrite(13,HIGH);
 delay(1000);
}
 ​

这段是高级渐变 (可以说是十分的光污染了)

//colort test;  
const int red = 9;  
const int green =10;  
const int blue = 11;  
  
void setup() {  
  {   
    pinMode(red, OUTPUT);   
    pinMode(green, OUTPUT);    
    pinMode(blue, OUTPUT);   
  }  
}  
  
void loop() {  
//总共有8*8*4=256种颜色;  
 for(double r=0.125; r<=1.0; r+=0.125)   //8  
   for(double g=0.125; g<=1.0; g+=0.125) //8  
      for(double b=0.25; b<=1.0; b+=0.25) //4  
      {  
        double k1=g/r;    //比例系数;  
        double k2=b/
2017-11-19 17:58:02    23    0    0

Python内置的enumerate函数可以把一个list变成索引-元素对

比如

enumerate([a,b,c])

=

0 a

1 b

2 c

简单来说就是加上下标



列表生成式

[变量式 迭代式(可多个) 判断式]

三部分组成

isinstance(变量,类型名) 如str,返回True则是这个类型,返回False则不是

2017-11-05 13:29:42    11    0    0

在程序员网站上经常看到一个段子(满满的都是泪啊)

手持两把锟斤拷,口中疾呼烫烫烫。

解释一下为什么会是这两个东西不是别的= =:

棍斤拷乱码:

源于GBK字符集和Unicode字符集之间的转换问题。Unicode和老编码体系的转化过程中,肯定有一些字,用Unicode是没法表示的,Unicode官方用了一个占位符来表示这些文字,这就是:U+FFFD REPLACEMENT CHARA

2017-11-05 13:29:28    7    0    0

https://universaloj.github.io/post/一键安装UOJ.html

http://udn.yyuap.com/doc/docker_practice/container/enter.html docker文档

http://blog.csdn.net/zjin_hua/article/details/52041757

sudo find / -name uoj    寻找文件

sudo  nautilus 权限打开文件夹

ls查看文件

cd进入文件夹

配置文件,在 /var/www/uoj/app/.config.php 里


sudo docker attach uoj 进入容器http://www.cnblogs.com/zhuxiaojie/p/5947270.html

我们运行docker容器的时候,使用了-d参数,把容器在后台运行后。
这个时候,我们使用docker ps命令,我们就可以知道哪些程序在后台运行。
 

 

我们要怎么进入到docker容器呢?
 
 
1:使用docker attach命令
我们使用
 
docker attach db3 或者 docker attach d48b21a7e439

 

 
db3是后台容器的NAMES,d48b21a7e439是容器的进程ID  CONTAINER ID
然后就进去了这个容器的ssh界面。
但是它有一个缺点,只要这个连接终止,或者使用了exit命令,容器就会退出后台运行
 
 
2:使用docker exec命令
这个命令使用exit命令后,不会退出后台,一般使用这个命令,使用方法如下
 
docker exec -it db3 /bin/sh 或者 docker exec -it d48b21a7e439 /bin/sh

 

 
db3是后台容器的NAMES,d48b21a7e439是容器的进程ID  CONTAINER ID
 /bin/sh 是固定写法
它也能进入这个容器



2017-11-05 13:29:17    5    0    0

  

http://blog.csdn.net/sun19910114/article/details/38683839

在Windows下使用gcc编译器:

1.首先介绍下MinGW

 

MinGW是指只用自由软件来生成纯粹的Win32可执行文件的编译环境,它是Minimalist GNU on Windows的略称。

  实际上 MinGW 并不是一个 单纯的C/C++ 编译器,而是一套 GNU 工具集合。除开 GCC 以外,MinGW 还包含有一些其他的 GNU 程序开发工具 (比如 gawk bison 等等)。
  开发 MinGW 是为了那些不喜欢工作在 Linux(FreeBSD) 操作系统而留在 Windows 的人提供一套符合 GNU 的 GNU 工作环境。
  所以,使用 MinGW 我们就可以像在 Linux 下一样使用 GNU 程序开发工具。
  GCC 就是 MinGW 的核心所在,GCC 是一套支持众多计算机程序语言的编译系统,而且在语言标准的实现上是最接近于标准的。并且 GCC 几乎可以移植到目前所有可用的计算机平台。(我的电脑上就还装有 DevKitPro,里面包含 GCC 的 ARM(for GBA/DS/GP32) 和 MIPS(for PSP) 版本。)
  GCC 本身不像 VC 那样拥有IDE 界面(在 Windows 上也存在 Dev C++ 之类的支持 MinGW 编译器的 IDE)。源代码编辑你可以选用任何你喜欢的文本编辑器(据说微软的开发人员包括 VC 的开发都不用 VC 所带的 IDE 编辑器,而是选用 GNU 的 VIM 编辑器)。然后使用 make 等工具来进行软件项目的编译、链接、打包乃至发布。而像 cvs(svn) 源代码版本控制工具可以让世界上任何一个角落的人都可以参与到软件项目中来。


2.下载MinGW

一种方法是到Sourceforge(http://sourceforge.net/project/showfiles.php?group_id=2435)下载一个MinGW-2.0.0-3.exe。

但是我配置的时候我电脑上安装了codeblocks,已经自带了MinGW。


3.环境变量的配置

在(系统属性-->高级-->环境变量-->系统变量 中)(以下目录都根据自己的电脑MinGW所在位置不同而改变)

a.在PATH的值中加入“C

2017-11-05 13:29:08    130    0    0
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
//树状数组求前缀和 
using namespace std;
int a[100001],n,t[10001];
int add(int k,int num)
{
	while(k<=n)
	{
		t[k]+=num;
		k+=k&-k;
	}
	return 0;
}
int sum(int k)
{
	int ans=0;
	while(k!=0)
	{
		ans+=t[k];
		k-=(k&(-k));
	}
	return ans;
}
int main()
{
	int k,i;
	cin>>n;
	for(i=1;i<=n;i++)cin>>a[i];
	int in,in1,in2;
	for(i=1;i<=n;i++)
	{
		k=i;
		for(int j=0;j<(k&-k);j++)
		{
			t[i]+=a[i-j];
		}
	}
	while(1)
	{
		cin>>in;
		if(in==1)
		{
			cin>>in1>>in2;
			add(in1,in2);
		}
		else if(in==2)
		{
			cin>>in1;
			cout<<sum(in1);
		}
		else return 0;
	}
} 

 先开着 过段时间写理解