一、準備工作
1.安裝樹莓派官方系統(tǒng)
2.安裝wiringpi庫
1) sudo geit clone git://git.drogon.net/wiringPi
2) sudo apt-get install git-core
3) cd wieingPi
4) sudo 。/build
安裝結束之后
運行命令 gpio readall

如果出現(xiàn)這個樹莓派引腳圖,說明安裝成功。進行下一步
3.新建一個CS1237.c和CS1237.h文件
CS1237.h
#ifndef __CS1237__h__
#define __CS1237__h__
#include 《stdio.h》
#include 《wiringPi.h》
#define SCK 1
#define DOUT 4
#define SCK_LOW digitalWrite(SCK,0)
#define SCK_HIGN digitalWrite(SCK,1)
//樹莓派wiring引腳對應關系如下
//AD轉換數(shù)值與實際重量的增益// #include 《Python.h》static double CS1237P = 0.0078742;
//初始化void CS1237Init()
{
wiringPiSetup();
pinMode(SCK,OUTPUT);
pinMode(DOUT,INPUT);
pullUpDnControl(DOUT,PUD_UP);
SCK_LOW;
}//是否轉換完畢int CS1237isReady()
{
if(digitalRead(DOUT)==0)
{
return 1;
}
return 0;
}//配置函數(shù)void CS1237Config()
{
//no op
}//一次上升沿void CS1237ClockUp()
{
SCK_LOW;
delayMicroseconds(10);
SCK_HIGN;
delayMicroseconds(10);
}//讀數(shù)據(jù)int CS1237Read()
{
int tmp=0;
int now=0;
int i;
int num=100;
while(!CS1237isReady())
{
;
}
for(i=0;i《23;i++)
{
SCK_LOW;
delayMicroseconds(10);
SCK_HIGN;
delayMicroseconds(10);
now = digitalRead(DOUT);
//printf(“%d,”,now );
tmp *=2;
tmp = tmp+now;
SCK_LOW;
}
SCK_LOW;
CS1237ClockUp();
CS1237ClockUp();
CS1237ClockUp();
SCK_LOW;
return tmp;
}
//得到平均立波得到實際數(shù)值//num:采樣次數(shù)int getValue(int num)
{
int i=0;
int tmp=0;
long weight = 0;
for(i=0;i《num;i++)
{
tmp = CS1237Read();
weight =weight + tmp;
}
return weight/num;
}int getHelp(int num)
{
return num*3;
}#endif
CS1237.c
#include “CS1237.h”int main()
{
int tmp,Orign;
printf(“hello rasp %s ”,“dsc” );
//初始化CS1237
CS1237Init();
//得到初試點(0點校正)
Orign = getValue(200);
printf(“Orign value is %d ”, Orign);
while(1)
{
tmp = getValue(100);
printf(“now is %lf ”, (tmp-Orign)*CS1237P);
}
}
代碼寫好之后在同目錄下編譯:
gcc CS1237.c -o test -lwiringPi
運行
。/test

二、將程序封裝為python可調用的庫
python 調用C的方式:
新建一個CS1237.如下
#include 《stdio.h》
#include 《wiringPi.h》
#define SCK 1
#define DOUT 4
#define SCK_LOW digitalWrite(SCK,0)
#define SCK_HIGN digitalWrite(SCK,1)
//樹莓派wiring引腳對應關系如下
//AD轉換數(shù)值與實際重量的增益#include 《Python.h》static double CS1237P = 0.0078742;
//初始化void CS1237Init()
{
wiringPiSetup();
pinMode(SCK,OUTPUT);
pinMode(DOUT,INPUT);
pullUpDnControl(DOUT,PUD_UP);
SCK_LOW;
}//是否轉換完畢int CS1237isReady()
{
if(digitalRead(DOUT)==0)
{
return 1;
}
return 0;
}//配置函數(shù)void CS1237Config()
{
//no op
}//一次上升沿void CS1237ClockUp()
{
SCK_LOW;
delayMicroseconds(10);
SCK_HIGN;
delayMicroseconds(10);
}//讀數(shù)據(jù)int CS1237Read()
{
int tmp=0;
int now=0;
int i;
int num=100;
while(!CS1237isReady())
{
}
for(i=0;i《23;i++)
{
SCK_LOW;
delayMicroseconds(10);
SCK_HIGN;
delayMicroseconds(10);
now = digitalRead(DOUT);
//printf(“%d,”,now );
tmp *=2;
tmp = tmp+now;
SCK_LOW;
}
SCK_LOW;
CS1237ClockUp();
CS1237ClockUp();
CS1237ClockUp();
SCK_LOW;
return tmp;
}
//得到平均立波得到實際數(shù)值//num:采樣次數(shù)
int getValue(int num)
{
int i=0;
int tmp=0;
long weight = 0;
for(i=0;i《num;i++)
{
tmp = CS1237Read();
weight =weight + tmp;
}
return weight/num;
}
int getHelp(int num);
{
return num*3;
}
PyObject * wrap_getValue(PyObject *self,PyObject *args)
{
int num;
int weight;
if(!PyArg_ParseTuple(args,“i:getValue”,&num))
return NULL;
weight = getValue(num);
return Py_BuildValue(“i”,weight);
}
PyObject * wrap_getHelp(PyObject *self,PyObject *args)
{
int num;
int weight;
if(!PyArg_ParseTuple(args,“i:getValue”,&num))
return NULL;
weight = getHelp(num);
return Py_BuildValue(“i”,weight);
}
PyObject * wrap_CS1237Init(PyObject *self,PyObject *args)
{
int num;
int weight;
CS1237Init();
return NULL;
}static PyMethodDef CS1237Methods[]=
{
{“getValue”,wrap_getValue,METH_VARARGS,“get weignt adc valie”},
{“getHelp”,wrap_getHelp,METH_VARARGS,“get help adc valie”},
{“CS1237Init”,wrap_CS1237Init,METH_VARARGS,“get help adc valie”},
{NULL,NULL}
};
void initCS1237()
{
PyObject *m;
CS1237Init();
m = Py_InitModule(“CS1237”,CS1237Methods);
}
然后交叉編譯:
命令代碼(路徑按照自己的)
gcc -fPIC CS1237.c -o CS1237.so -shared -I/usr/include/python2.7 -I/usr/lib/python2.7/config
然后在此目錄下新建一個test.py驗證一下:
5) # test.py
6) # coding=utf-8
7) import CS1237
8) tmp = CS1302.getValue(20)
9) print temp
執(zhí)行python test.py 運行結果出來了:
33077
電子發(fā)燒友App







評論