Este guia está escrito para pessoas com experiência ou conhecimento de programação zero. Trabalhar com o IC10 pode ser bastante assustador para alguém novo. Felizmente, Depois de se acostumar a pensar sobre as coisas em um sistema sistemático, maneira passo a passo, Fazer chips para fazer o que você quer que eles façam é surpreendentemente intuitivo. Este guia tem como objetivo levá -lo a esse ponto.
Configurar
Para começar a trabalhar com IC10, você precisará de algum equipamento básico:
- Computador
- Editor de IC placa -mãe
- Habitação de IC
- Chip IC10 (Coloque dentro da caixa)
A porta de dados do IC Housing deve ser conectada à porta de dados do computador, e ambos devem ser alimentados. Por simplicidade, Acabei de conectá -los todos em uma rede separada. Você pode separar uma rede do resto da sua base, colocando um controlador de energia entre.
Se ambos estiverem adequadamente conectados e alimentados, Você verá o suspensão no canto superior esquerdo da tela do computador lida “Habitação de IC” Ou tudo o que você rotulou a moradia.
Observe os outros dois botões: “Importar” e “Exportar”. O código que você escreve no computador é armazenado separadamente e não é transferido automaticamente para o chip IC10 atualmente no alojamento. Clicando em “Importar” Carregará o código do chip no seu computador, substituindo o que você tem no editor. Clicando em “Exportar” Escreverá o código do seu computador no chip.
Não se esqueça de acertar a exportação sempre que terminar de ajustar seu código.
Finalmente, clique no “Editar” Botão no fundo direito da tela para abrir o editor de código.
Noções básicas
Vamos mergulhar diretamente nas coisas.
Não se preocupe com todos os botões por enquanto. Para entender o código, Vamos começar com sua estrutura.
O código é escrito como uma série de linhas, um após o outro. Observe os números de linha no lado esquerdo da tela. É lido de cima para baixo. Sempre lembre -se de que é exatamente isso que o computador faz também. Primeiro lê a linha 0 e faz o que essa linha diz para fazer, Em seguida, continue para a próxima linha e faz o que essa linha diz para fazer.
Às vezes, Uma linha dirá ao computador para pular para uma linha diferente em vez da próxima. O computador então lerá a linha que saltou para, Faça o que diz, Em seguida, passe para a próxima linha, E assim por diante e assim por diante.
Em caso de dúvida, Sempre comece na linha 0, E lentamente trabalhe seu caminho através do seu programa linha por linha. Siga o trem de pensamento do computador e você sempre poderá descobrir seus erros.
Observe que algumas palavras estão em cores diferentes. Cada uma dessas cores significa algo especial. Eles são uma ótima maneira de ajudá -lo a entender como o computador está interpretando o que você escreveu.
- Palavras amarelas são funções. Eles dizem ao computador para executar uma ação específica. Muitas vezes, você precisará fornecer uma função algumas informações adicionais, ou argumentos.
- Palavras brancas são nomes. Isso ajuda você a lembrar qual o papel que você atribuiu a vários dispositivos e registros.
- Palavras verdes são portas de dispositivo. Eles correspondem a conexões específicas no IC10 habitação, e é como você conecta o chip a outras coisas na rede, como sensores, Aquecedores e refrigeradores, e assim por diante.
- Palavras laranja são variáveis de dispositivo. Eles correspondem a informações específicas que um dispositivo coleta ou usa, E eles diferem de dispositivo para dispositivo. Por exemplo, você pode editar Horizontal e Vertical em painéis solares para controlar onde eles estão voltados, enquanto você pode ler Temperatura e Pressão de sensores de gás.
- Palavras azuis são registros. Eles funcionam como memória temporária, Locais para armazenar números com os quais você está trabalhando atualmente. Por exemplo, Quando você carrega a temperatura de um sensor de gás, você precisará primeiro armazená -lo em um registro se quiser compará -lo com outra coisa.
- Palavras em baratas são valores. São números simples e significam como eles se parecem.
- Palavras roxas são Rótulos. Em vez de dizer a um computador para pular para uma linha específica, Podemos dizer para pular para um rótulo em vez disso. Isso nos ajuda muito a organizar nosso código, dando nomes para partes específicas dele.
- Palavras vermelhas são erros. Na maioria das vezes, Você entrou em algo errado. No entanto, Às vezes, o editor não reconhece rótulos corretamente.
Finalmente, Observe os três botões no lado superior direito do editor. Essas são listas de referência que podem ajudá -lo quando você não tem certeza de qual ordem escrever seus argumentos, por exemplo.
O mais importante é “f”, que é uma lista de funções e os argumentos que eles assumem.
Dispositivos
Quando você conecta uma carcaça IC10 a uma rede, Ele não reconhece automaticamente outros dispositivos na rede. Para poder falar com eles em seu código, Você precisa vinculá -los às portas do dispositivo na carcaça IC10.
Isso é feito segurando uma chave de fenda e ajustando os parafusos no alojamento. Quando você passa o mouse sobre cada parafuso, Você pode ver o nome do dispositivo ao qual a porta está atualmente conectada, e para qual você mudará se clicar no parafuso novamente.
Observe que se você renomeou as portas do dispositivo em seu código com a função de alias, você verá o nome do porto quando passar o mouse nele. De forma similar, Se você renomeou seus dispositivos com o gravador, Você verá o novo nome do dispositivo quando estiver ajustando as portas.
Código Parte I.
Ao longo desta seção, Vou me referir ao exemplo de script postado acima, e só aquele. Os números de linha e os rótulos de seção sempre serão os mesmos. Este script controla um monte de refrigeradores de parede líquidos para manter a temperatura entre 20 graus Celsius e 25 graus Celsius.
Vamos começar de cima e trabalhar em nossa linha por linha.
0. Alias sensor D0
O Alias a função simplesmente atribui um nome a algo como um dispositivo ou um registro. No entanto, é uma das funções mais úteis que você pode usar, pois ajuda muito a organização.
Nesse caso, Estamos atribuindo o nome “Sensor” para d0. Lembre -se da seção anterior sobre dispositivos? D0 é o dispositivo que está conectado ao canto superior esquerdo da carcaça do IC. Nesse caso, Estamos dando ao dispositivo conectado a esse slot o apelido “Sensor”.
Observe que o alias não renomeia o dispositivo que está conectado ao slot. Você deve usar manualmente um gravador para fazer isso. Alias é puramente para uso dentro do código que você está escrevendo.
1. Alias CurrTemp R0
Outro uso de um pseudônimo. No entanto, Estamos atribuindo um nome a um registrar. Pense em um registro como um bloco de memorando. Ele armazena informações para uso temporário. Nesse caso, Vamos usá -lo para armazenar a temperatura que obtemos do sensor, E assim chamamos isso “Currem Temp”, ou temperatura atual.
2. Alias Maxtemp R1 3. Alias mintemp r2 4. Alias Seton R3 5. alias SetOff r4
Nessas linhas, Estamos atribuindo mais alguns nomes aos registros que usaremos no programa. Estas são as temperaturas máximas e mínimas que queremos na sala, e os valores que precisamos armazenar em um dispositivo para dizer para ligar e desligar.
6. Adicione maxteMP 273 25
Aqui temos a primeira matemática real no programa. Vamos quebrá -lo. Primeiro, embora, Vamos dar uma olhada na descrição da função para adicionar no próprio guia de referência do editor.
Se isso parece confuso, não se preocupe. É bastante simples quando você o quebra.
Adicione r? a ( r? | num ) b ( r? | num ) Registro = a + b.
A primeira linha descreve como você usa a função em seu código. Nesse caso, você digita “adicionar” primeiro. Então você especifica o registro (r?). Então você especifica um, e finalmente, você especifica b.
O primeiro registro que você especifica é o local onde você deseja armazenar o resultado. Lembre -se de que os registros são almofadas de memorando onde você armazena informações. O resultado de adicionar dois números é útil, Mas se você quiser usá -lo, você precisa armazená -lo em algum lugar- geralmente um registro.
a(r? | num) significa isso “a” pode ser um registro ou um número. Se você especificar um registro, adicionar levará o número armazenado no registro. O mesmo vale para “b”.
Lembre -se de que os registros são almofadas de memorando que armazenam informações. Na maioria das vezes, Os registros armazenarão um número. Então, se registrar 4 armazena o número 15, e registrar 5 armazena o número 3, então:
Adicionar R0 R4 R5
Isso significa que você deseja adicionar o número em R4 ao número em R5 e armazenar o resultado em R0. Depois desta linha, R0 conterá o número 18.
De forma similar:
Adicione R0 R4 6
Isso significa que você deseja adicionar o número em R4 ao número 6 e armazenar o resultado em R0. Depois desta linha, R0 conterá o número 21.
No código de exemplo, nós usamos:
6. Adicione maxteMP 273 25
Isso significa que queremos adicionar 273 para 25, e armazenar o resultado em “Maxtemp”. Lembre -se de antes (em linha 2) que nós aliávamos “Maxtemp” para R1. Por isso, Esta linha simplesmente adiciona 273 para 25 e o armazena no registro R1.
É isso que queremos que nossa temperatura máxima seja- 273 + 25 graus Kelvin, ou aproximadamente 25 graus Celsius.
7. Adicione mintemp 273 20 8. Adicione Seton 0 1 9. Adicione a compensação 0 0
Igual ao acima. Estamos armazenando nossa temperatura mínima de 20 graus Celsius no registro R2, armazenando o número 1 no registro R3, e armazenar o número 0 into register r4.
Até aqui, Tão bom. Acabamos de configurar os números básicos que precisamos.
Código Parte II
10. principal:
Esta linha é um rótulo. Nas seguintes linhas de código, Se queremos voltar a este local, Em vez de dizer ao computador a linha específica que queremos pular, Podemos simplesmente dizer para pular “principal” em vez de.
11. L Currtemp Temperatura do sensor
Esta é a nossa primeira linha com dois aliases nele, Mas não fique confuso. É uma instrução simples.
O que o computador está fazendo é:
- Procure o dispositivo “Sensor”, qual foi o pseudônimo que demos a D0 na fila 0.
- Obtenha o valor “Temperatura” do sensor.
- Armazene o valor no registro “Currem Temp”, qual foi o pseudônimo que demos ao R0 na fila 1.
Depois desta linha, A temperatura atual que nosso sensor de gás está exibindo será coletada e armazenada em R0, ou currTemp.
12. BGT Currtemp maxtemp
BGT é a filial função, abreviação de filial (se) maior que.
A palavra -chave é “se”. Se o primeiro argumento for maior que o segundo argumento, então o computador vai pular para o local que você especificar.
Nesse caso: Se CurrTemp for maior que o MaxteMP- isto é, dizer, Se a temperatura que lemos no sensor for maior que a temperatura máxima que queremos, o que é 25 graus Celsius- Então queremos que o computador pule direto para a seção chamada “OVERTEMP”.
De outra forma, Se CurrTemp não for maior que o MaxteMP, o computador não vai pular para “OVERTEMP” e, em vez disso, vá para a próxima linha.
13. BLT Currtemp minteMP
BLT é outra função de ramificação, abreviação de filial (se) menor que.
É o mesmo negócio que BGT, exceto com menos do que em vez de maior que.
Então, neste caso, Se CurrTemp for menor que mintemp- Se nossa temperatura atual no sensor for menor que a temperatura mínima de 20 graus Celsius que queremos- Então vamos direto para “reportemp”. Caso contrário, simplesmente continuamos para a próxima linha.
14. mão
Esta é uma das linhas mais importantes em todo o programa.
Simplesmente o suficiente, “j” diz ao computador para pular para outra linha específica no programa.
Já que queremos monitorar a temperatura do nosso quarto, Não podemos simplesmente executá -lo uma vez- O programa precisa continuar se repetindo repetidamente. Cada vez que ele se repete, Queremos que ele verifique a temperatura, e depois liga e desative os refrigeradores conforme necessário.
Então, quando chegamos ao fim do programa, Dissemos para voltar ao início.
Nesse caso, Dissemos para voltar para “principal”, que foi rotulado on -line 10, No início desta seção do guia. Toda essa parte em loop do programa é chamada de Loop principal.
Chegamos aqui se a temperatura não estiver acima 25 graus nem abaixo 20 graus Celsius- felizmente no meio. Nesse caso, Queremos começar de cima e verificar a temperatura novamente, Então, voltamos à linha 10 e reiniciar o programa a partir desse ponto.
Código Parte III
15. OVERTEMP:
Este é o rótulo “OVERTEMP”. Lembre -se de que se a temperatura que coletamos do sensor no loop principal fosse maior que 25 graus Celsius, Dissemos ao computador para pular aqui.
sb -1369060582 Em Seton
Esta é outra função que parece complicada, mas na verdade é bastante simples.
sb é uma função que conjuntos variáveis em a lote de dispositivos na rede.
Por exemplo, Se quiséssemos contar a todos os painéis solares em uma rede para se voltar para uma altura vertical específica, nós usaríamos esta função.
Nesse caso, Queremos contar todos os refrigeradores de parede líquida na rede para ativar, Como a temperatura é maior que a temperatura máxima que queremos.
-1369060582 é o Hash pré -fabricado de refrigeradores de parede líquidos. O hash identifica o tipo de dispositivo, não um objeto individual. Você pode clicar no hash pré-fabricado de cor azul para copiá-lo para sua área de transferência, e colá -lo no editor dessa maneira, em vez de memorizar e digitá -lo.
Então, o que estamos dizendo com sb é que queremos fazer algo com todos os dispositivos desse tipo em particular.
Especificamente, Queremos escrever o valor do registro “Seton” para o “Sobre” variável no dispositivo.
Basicamente, Para ligar e desligar um dispositivo, Precisamos escrever os valores “1” e “0” respectivamente ao seu “Sobre” variável. O sb A função é uma maneira fácil de fazê -lo em um lote inteiro de dispositivos com um chip IC10 sem ter que usar escritores de lote lógico.
Isso pode ficar um pouco confuso, Porque estaremos escrevendo para a mesma variável de “Sobre” no dispositivo mais tarde no reportemp seção.
É assim que as coisas são. Não há um separado “Desligado” variável para escrever se quisermos desligá -lo. Em vez de, nós apenas temos em = 0 para desativar, e on = 1 para ON.
Assim depois desta linha, Teremos ligado em todos os refrigeradores de parede líquidos na rede.
mão
Outra vez, Precisamos monitorar a temperatura à medida que ela muda continuamente, não apenas uma vez. Assim como antes, Voltamos ao início de principal, para que possamos ler a temperatura mais uma vez, e comece o loop desde o início.
18. reportemp: 19. sb -1369060582 Na compensação 20. mão
Isso deve parecer familiar agora.
Nós chegamos reportemp Quando a temperatura está abaixo 20 graus Celsius. Nesse caso, Queremos virar desligado Todos os nossos refrigeradores. Assim, em vez de escrever Seton (que tem o valor de 1) para nossos refrigeradores de parede, Escrevemos a configuração (que tem o valor de 0).
E finalmente, nós voltamos para o principal de novo, Iniciando o loop por toda parte.
Análise
Agora que sabemos o que cada linha individual faz, O que o programa como um todo realmente faz?
Vamos começar com uma sala que é um pouco quente demais, dizer 30 graus Celsius, e percorrer todo o programa para ver o que faz.
No começo, O programa configura seus aliases e números básicos (ou constantes). Essa parte acontece normalmente.
Agora chegamos à linha 11. Já que a sala é 30 graus Celsius, O sensor vai ler 303 graus Kelvin, e, portanto, o programa carregará o valor de 303 em currTemp.
Agora chegamos à linha 12. O programa compara CurrTemp com MaxteMP: 303 para 298. Desde 303 é maior que 298, nós ramos (ou pular) para o OPTEMP.
Agora estamos online 15 (OVERTEMP), E passamos a linha 16. Definimos todos os refrigeradores de parede para ligar, e depois passe para a próxima linha.
Agora estamos online 17. Nós voltamos para o principal, que é linha 10, e passar para a linha 11.
Enquanto isso, A sala esfriou um pouco- Vamos dizer 27 graus Celsius.
Outra vez, O programa carrega a temperatura em currtemp, o que é 300.
Desde 300 ainda é maior que 298, ele salta para o poço novamente, e liga todos os refrigeradores de parede.
Observe que durante todo esse tempo, Os refrigeradores de parede ainda estavam ligados! Não havia nada que lhes disse para desligar, E ligando -os enquanto eles já estão ligados.
Depois disso, Voltamos ao início do loop principal.
Agora suponha que a sala tenha esfriado ainda mais, desta vez para 24 graus Celsius.
O programa carrega a temperatura mais uma vez, o que é agora 297.
Isso não é maior do que 298! Então o programa faz não Salte para o OpedMP.
Em vez de, continua em linha 13, e compara com mintemp- 293.
297 é também não menor que 293, E assim o programa passa a linha 14, e inicia o loop principal de novo.
Observe mais uma vez que os refrigeradores ainda estão ligados durante todo esse tempo.
Suponha que a sala finalmente se refresque 19 graus Celsius.
Mais uma vez carregamos a temperatura, o que é 292.
Isso não é maior do que 298, E assim não pulamos para o poço.
No entanto, isso é menor que 293, E assim, pulamos para realizar.
Agora on -line 19, Finalmente desligamos todos os refrigeradores e voltamos ao início do loop principal.
Basicamente, Este programa mantém a sala em uma faixa entre 20 e 25 graus Celsius. Se acabar 25, vai esfriar até chegar 20. Uma vez que atinge 20, Não começará a esfriar novamente até que a temperatura ultrapasse 25 outra vez.
Você pode verificar se você entende como o programa funciona começando com uma sala fria sob 20 graus Celsius que está naturalmente ficando mais quente, e passando pelas etapas que fizemos nesta seção.
Finalmente, Você pode verificar ainda mais sua compreensão começando com uma sala que acabou 30 graus Celsius, Mas em vez de ficar mais quente naturalmente, naturalmente fica mais frio para 0 graus Celsius.
Organização
Até aqui, Aprendemos a ler e entender o código da perspectiva do computador, e algumas funções básicas, e como usá-los.
No entanto, A coisa mais importante a entender é a estrutura do programa.
Quase toda vez, você terá o loop principal. Durante esse loop, Você lerá dados de vários sensores e máquinas. Então, com base nos dados que você coleta, Você pode decidir fazer coisas diferentes, Usando as várias declarações de ramificação, E talvez usando as declarações da loja para fazer outros dispositivos fazer algo. No final de tudo, você vai voltar para o início do loop principal.
A maioria dos programas em papes será estruturada assim. Por exemplo, com um programa de rastreamento solar, Seu loop principal será usado para obter os ângulos verticais e horizontais do sol a partir de sensores de luz do dia. Então você fará alguns cálculos nos ângulos, e use a função de lote da loja para gravar nas variáveis horizontais e verticais em todos os painéis solares da rede.
O resto está descobrindo o que carrega e grava para usar, quais funções de matemática você precisa, Quando e como ramificar, E então mantendo tudo arrumado e legível.
Isso é tudo o que estamos compartilhando hoje para isso Papes guia. Este guia foi originalmente criado e escrito por WhyThecynic. Caso não atualizemos este guia, você pode encontrar a atualização mais recente seguindo este link.
Oi,
Eu estava procurando um exemplo detalhado e explicado do código IC, e eu acho o seu muito claro! Obrigado por reservar um tempo para fazer isso.
Ótimo tutorial!
Obrigado! Em grande detalhe e compreensível.