错误:无效类型'uint16_t {aka short unsigned int} [uint8_t {aka unsigned char}]'对于数组下标

时间:2016-01-27 20:53:10

标签: c arduino teensy

背景: 我目前正致力于为'Uncanny Eyes'制作Adafruit计划。我的目的是能够使用几个瞬间开关将静态图像绘制到一对1.5英寸的OLED上。

该程序使用Teensy 3.1或3.2。

我收到错误后现在卡住了

  

在函数'void drawEye(uint8_t,uint16_t)'中:uncannyEyes:146:错误:   无效类型'uint16_t {aka short unsigned int} [uint8_t {aka unsigned   char}]'对于数组下标p = img [screenY] [screenX];

我是Stack Exchange社区的新用户,所以如果我做错了什么,我会道歉!

goatEye.h

标题#define SCREEN_HEIGHT 128 #define SCREEN_WIDTH 128 const uint16_t sclera[SCREEN_HEIGHT][SCREEN_WIDTH] = {}; const uint16_t polar[SCREEN_HEIGHT][SCREEN_WIDTH] = {}; 没有数组数据,因为帖子将是MASSIVE

{{1}}

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

变量${jetty.base}/webapps/不是指针,它是img,无法像unsigned short int那样进行访问

将您的参数更改为p = img[screenY][screenX];并像uint16_t* img一样访问它,然后调用然后调用该函数p = img[screenY*screenX];

答案 1 :(得分:0)

问题在于:

void drawEye(      // Renders one eye.
  uint8_t   e,     // Eye array index; 0 or 1 for left/right
  uint16_t img) { // Pointer to image data

函数drawEye期待单个uint16_t,而不是二维数组。因此,当您尝试获取它的数组索引时,会出现错误,因为它不是数组。

你需要像这样定义你的函数:

void drawEye(      // Renders one eye.
  uint8_t   e,     // Eye array index; 0 or 1 for left/right
  const uint16_t img[SCREEN_HEIGHT][SCREEN_WIDTH]) { // Pointer to image data

并称之为:

    if(digitalRead(2) == LOW) {
      drawEye(0, sclera);
      drawEye(1, sclera);
    }