2017-01-26 13 views
0

私はadafruit FRAMメモリブレークアウトでarduinoを使用しています。私は、配列から値を抽出するために、次のようにして、FRAMにそれらを保存しようとしています。問題は、保存されている値が正しいものではないということです。これらの値を格納するには、どのような変換が必要ですか?アレイ値をメモリに書き込むのに問題があります

#include <Wire.h>   
#include "Adafruit_FRAM_I2C.h"   
String incomingData = "244,1,1,7,13,1,0";   


Adafruit_FRAM_I2C fram  = Adafruit_FRAM_I2C();   
uint16_t   framAddr = 0;   
void setup(void) {   

Serial.begin(9600);   

    if (fram.begin()) { // you can stick the new i2c addr in here, e.g. begin(0x51);   
    Serial.println("Found I2C FRAM");   
    } else {   
    Serial.println("I2C FRAM not identified \r\n");   
    }   

uint8_t input[16];   

incomingData.getBytes(input,16);   
uint8_t *str;   
int i_ctr;   
uint8_t arr[16][16];    

for(i_ctr = 0,str = strtok(input,","); str!= NULL; i_ctr++, str= strtok(NULL,","))   
    {   
    strcpy(arr[i_ctr], str);   
    }   


fram.write8(0x0, arr[0]);   
       fram.write8(0x1, arr[1]);   
       fram.write8(0x2, arr[2]);   
fram.write8(0x3, arr[3]);   
       fram.write8(0x4, arr[4]);   
       fram.write8(0x5, arr[5]);   
       fram.write8(0x6, arr[6]);   
       fram.write8(0x7, 77); //test   

    Serial.println(fram.read8(0x0));   
    Serial.println(fram.read8(0x1));   
    Serial.println(fram.read8(0x2));   
    Serial.println(fram.read8(0x3));   
    Serial.println(fram.read8(0x4));   
    Serial.println(fram.read8(0x5));   
    Serial.println(fram.read8(0x6));   
    Serial.println(fram.read8(0x7));   

}   

この出力は:

218 
234 
250 
10 
26 
42 
58 
77 

答えて

0

arr[i]はアドレスであり、そしてあなたが実際に書き込みが(印刷された値が16離れているかを確認)アドレスの下位バイトです。着信データの数値を取得する場合は、コードを

uint8_t arr[16]; // One dimension is enough 
    for (....) { 
     arr[i_ctr] = atoi(str); 
    } 

PSに変更してください。コンパイラの警告は表示されませんか?

+0

ありがとうございます!それがそれでした。 – nonlinearmind

関連する問題