极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11933|回复: 0

关于ADNS0380的问题

[复制链接]
发表于 2017-11-24 14:41:12 | 显示全部楼层 |阅读模式
各位高手:
       今天购进一块光流传感器模块(ADNS0380),找到一个有关程序,模块接到ARDUINO UNO上,但是无法读取X,Y的数值。程序如下:
哪位高手指点一二,多谢!
         
/*Arduino.2-A3080.CS
Arduino.12-A3080.MISO
Arduino.11-A3080.MOSI
Arduino.13-A3080.SCK
Arduino.5V-A3080.5V
Arduino.GND-A3080.GND*/

#include "SPI.h"
#include "ADNS3080.h"

char a1,a2,a3,a4;

void setup()
{
   pinMode(2,OUTPUT);//将数字脚2设为输出模式
   SPI.begin();   //启动SPI
   SPI.setBitOrder(MSBFIRST);     //串行数据传输时先传输高位
   SPI.setDataMode(SPI_MODE3);//时钟极性和相位
   SPI.setClockDivider(SPI_CLOCK_DIV8);//传感器工作频率
   Serial.begin(115200);
   Serial.println("ADNS-3080 test by Athelloren\n");
   delay(1000);
}

void loop()
{
    a1=read_register(0x00);
    a2=read_register(0x02);
    a3=read_register(0x03);
    a4=read_register(0x04);
    Serial.print("ID: ");
    Serial.print(a1,HEX);
    Serial.print("\tMotion: ");
    Serial.print(a2,BIN);
    Serial.println();
    Serial.print("dx: ");
    Serial.print(a3,DEC);
    Serial.print("\tdy: ");
    Serial.print(a4,DEC);
    Serial.println();
    delay(10);
}

byte read_register(byte address)//从A3080的寄存器中读数据
{
  byte result = 0, junk = 0;
  digitalWrite(2, LOW);   //拉低从机CS
  junk = SPI.transfer(address);
  delayMicroseconds(50);
  result = SPI.transfer(0x00);
  digitalWrite(2, HIGH);   //拉高从机CS
  return result;
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-24 01:31 , Processed in 0.037576 second(s), 17 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表