2016-04-07 21 views
0

Arduino için bir kütüphane yazıyorum ve bu problemle karşılaşıyorum: Bir analog pin tanımlamak için uint8_t değişken oluşturmam gerekiyor (Ax) ve yapamıyorum bunu kolay bir şekilde yapmak.int + char ile uint8_t composing

sensortemp::sensortemp(int pin)  // Constructor 
{ 
    // being _pin an uint8_t 
    // _pin = A0 if pin = 0; 
    // _pin = A1 if pin = 1; 
    // etc. 
} 
buldum

tek çalışan çözüm kullanmak istediğim DEĞİL biridir ...

sensortemp::sensortemp(int pin) 
{ 
    if(pin == 0) 
    _pin = A0; 
    else if(pin == 1) 
    _pin = A1; 
    else if(pin == 2) 
    _pin = A2; 
    else if(pin == 3) 
    _pin = A3 
} 

:

Bu aşağı yukarı bir uint8_t olmak benim sorunu _pin göstermektedir Birisi bana bu uint8_t sorun bana yardımcı olabilir umarım Şimdiden teşekkürler

+2

Ne? Burada herhangi bir uint8_t' veya onunla ilgili herhangi bir sorun görmüyorum. –

+0

Neden A0'ya yöntemini iletemiyorsunuz? –

+0

'_pin' ve' Ax' için ne tür? – manuell

cevap

2

Sorun yok Tip dönüşümü ile lem ve aradığınız şey, bir aralık denetimi ile isteğe bağlı olarak:

. Ayrıca, _pinuint8_t ise, pin'u da aynı şekilde yapın. Eğer bir uyarı alıyorsanız, static_cast taç çizgisinin Arduino için örneğin A0 sabiti (Arduino Uno için 14 veya 54 başlayarak

_pin = static_cast<uint8_t>(pin + A0); 

Arduino pimleri tamsayı olarak tanımlanır Mega - listelenmektedir daha dijital pim çünkü önce). Hepsi ardışık tamsayılar olarak tanımlanmıştır, bu yüzden ilk analog pin() ile ofset (pin) eklemeniz yeterlidir.


Sen geçersiz pin denetlemek için gidiyoruz değil iyi uygulama için member initializer list kullanmak isteyebilirsiniz.

+0

'u işaret etmeyi özlemişimdir. Aradığım şey budur, teşekkür ederim! En kısa zamanda uint8_t hakkında bilgi edinmek için zamanımı alacağım. – eduherminio

+0

A0, A1, ... pinlerinin tam sayı olduğunu bilmiyordum, o zaman uint8_t olarak kullanmak için bir sebep yok. – eduherminio

+0

@Eduardo Aslında, bir tamsayı olan "uint8_t" - bunlar yalnızca "int" değil. – LogicStuff

İlgili konular